io.fabric8.kubernetes.api.model.NodeList#com.thoughtworks.go.plugin.api.response.GoPluginApiResponse源码实例Demo

下面列出了io.fabric8.kubernetes.api.model.NodeList#com.thoughtworks.go.plugin.api.response.GoPluginApiResponse 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Test
public void shouldTerminateElasticAgentOnJobCompletion() throws Exception {
    JobIdentifier jobIdentifier = new JobIdentifier(100L);
    ClusterProfileProperties clusterProfileProperties = new ClusterProfileProperties();
    String elasticAgentId = "agent-1";
    JobCompletionRequest request = new JobCompletionRequest(elasticAgentId, jobIdentifier, null, clusterProfileProperties);
    JobCompletionRequestExecutor executor = new JobCompletionRequestExecutor(request, mockAgentInstances, mockPluginRequest);
    GoPluginApiResponse response = executor.execute();

    InOrder inOrder = inOrder(mockPluginRequest, mockAgentInstances);
    inOrder.verify(mockPluginRequest).disableAgents(agentsArgumentCaptor.capture());
    List<Agent> agentsToDisabled = agentsArgumentCaptor.getValue();
    assertEquals(1, agentsToDisabled.size());
    assertEquals(elasticAgentId, agentsToDisabled.get(0).elasticAgentId());
    inOrder.verify(mockAgentInstances).terminate(elasticAgentId, clusterProfileProperties);
    inOrder.verify(mockPluginRequest).deleteAgents(agentsArgumentCaptor.capture());
    List<Agent> agentsToDelete = agentsArgumentCaptor.getValue();
    assertEquals(agentsToDisabled, agentsToDelete);
    assertEquals(200, response.responseCode());
    assertTrue(response.responseBody().isEmpty());
}
 
@Test
public void shouldBarfWhenUnknownKeysArePassed() throws Exception {
    when(request.requestBody()).thenReturn(new Gson().toJson(Collections.singletonMap("foo", "bar")));

    GoPluginApiResponse response = new AuthConfigValidateRequestExecutor(request).execute();
    String json = response.responseBody();

    String expectedJSON = "[\n" +
            "  {\n" +
            "    \"message\": \"PasswordFilePath must not be blank.\",\n" +
            "    \"key\": \"PasswordFilePath\"\n" +
            "  },\n" +
            "  {\n" +
            "    \"key\": \"foo\",\n" +
            "    \"message\": \"Is an unknown property\"\n" +
            "  }\n" +
            "]";
    JSONAssert.assertEquals(expectedJSON, json, JSONCompareMode.NON_EXTENSIBLE);
}
 
@Test
@SuppressWarnings("unchecked")
public void shouldHandleApiRequestAndRenderSuccessApiResponse() {
    RequestHandler checkoutRequestHandler = new CheckoutRequestHandler();
    ArgumentCaptor<HashMap> responseArgumentCaptor = ArgumentCaptor.forClass(HashMap.class);

    when(JsonUtils.renderSuccessApiResponse(responseArgumentCaptor.capture())).thenReturn(mock(GoPluginApiResponse.class));

    checkoutRequestHandler.handle(pluginApiRequestMock);

    verify(jGitHelperMock).cloneOrFetch();
    verify(jGitHelperMock).resetHard(revision);

    Map<String, Object> responseMap = responseArgumentCaptor.getValue();
    ArrayList<String> messages = (ArrayList<String>) responseMap.get("messages");

    assertThat(responseMap, hasEntry("status", "success"));
    assertThat(messages, Matchers.contains(String.format("Start updating %s to revision %s from null", destinationFolder, revision)));
}
 
@Test
public void shouldPopulateNoOpClusterProfileWithPluginSettingsConfigurations_WithoutChangingClusterProfileIdIfItsNotNoOp() throws Exception {
    String clusterProfileId = "i-renamed-no-op-cluster-to-something-else";
    ClusterProfile emptyClusterProfile = new ClusterProfile(clusterProfileId, Constants.PLUGIN_ID, new PluginSettings());
    elasticAgentProfile.setClusterProfileId(emptyClusterProfile.getId());
    MigrateConfigurationRequest request = new MigrateConfigurationRequest(pluginSettings, Arrays.asList(emptyClusterProfile), Arrays.asList(elasticAgentProfile));
    MigrateConfigurationRequestExecutor executor = new MigrateConfigurationRequestExecutor(request);

    GoPluginApiResponse response = executor.execute();

    MigrateConfigurationRequest responseObject = MigrateConfigurationRequest.fromJSON(response.responseBody());

    assertThat(responseObject.getPluginSettings(), is(pluginSettings));
    List<ClusterProfile> actual = responseObject.getClusterProfiles();
    ClusterProfile actualClusterProfile = actual.get(0);

    assertThat(actualClusterProfile.getId(), is(clusterProfileId));
    this.clusterProfile.setId(actualClusterProfile.getId());

    assertThat(actual, is(Arrays.asList(this.clusterProfile)));
    assertThat(responseObject.getElasticAgentProfiles(), is(Arrays.asList(elasticAgentProfile)));

    assertThat(elasticAgentProfile.getClusterProfileId(), is(clusterProfileId));
}
 
@Override
public GoPluginApiResponse handle(GoPluginApiRequest goPluginApiRequest) {
    String requestName = goPluginApiRequest.requestName();
    if (requestName.equals(PLUGIN_SETTINGS_GET_CONFIGURATION)) {
        return handleGetPluginSettingsConfiguration();
    } else if (requestName.equals(PLUGIN_SETTINGS_GET_VIEW)) {
        try {
            return handleGetPluginSettingsView();
        } catch (IOException e) {
            return renderJSON(500, String.format("Failed to find template: %s", e.getMessage()));
        }
    } else if (requestName.equals(PLUGIN_SETTINGS_VALIDATE_CONFIGURATION)) {
        return handleValidatePluginSettingsConfiguration(goPluginApiRequest);
    } else if (requestName.equals(REQUEST_NOTIFICATIONS_INTERESTED_IN)) {
        return handleNotificationsInterestedIn();
    } else if (requestName.equals(REQUEST_STAGE_STATUS)) {
        return handleStageNotification(goPluginApiRequest);
    }
    return renderJSON(NOT_FOUND_RESPONSE_CODE, null);
}
 
@Test
public void shouldReturnErrorWhenPodForSpecifiedJobIdentifierNotFound() throws Exception {
    when(client.pods()).thenThrow(new RuntimeException("Boom!")); //can not find pod for specified job identitier

    JobIdentifier jobIdentifier = new JobIdentifier("up42", 1L, "1", "up42_stage", "1", "job_name", 1L);
    when(statusReportRequest.getJobIdentifier()).thenReturn(jobIdentifier);
    when(statusReportRequest.getElasticAgentId()).thenReturn(null);

    ClusterProfileProperties clusterProfileProperties = new ClusterProfileProperties();

    when(statusReportRequest.clusterProfileProperties()).thenReturn(clusterProfileProperties);
    when(kubernetesClientFactory.client(clusterProfileProperties)).thenReturn(client);

    when(builder.getTemplate("error.template.ftlh")).thenReturn(template);
    when(builder.build(eq(template), any(StatusReportGenerationError.class))).thenReturn("my-error-view");

    GoPluginApiResponse response = executor.execute();

    assertThat(response.responseCode(), is(200));
    assertThat(response.responseBody(), is("{\"view\":\"my-error-view\"}"));
}
 
@Test
public void shouldSetEnvironmentVariablesWithImageInformationInResponseRegardlessOfWhetherThePrefixIsProvided() {
    final ArtifactStoreConfig storeConfig = new ArtifactStoreConfig("localhost:5000", "other", "admin", "admin123");
    final HashMap<String, String> artifactMetadata = new HashMap<>();
    artifactMetadata.put("image", "localhost:5000/alpine:v1");
    artifactMetadata.put("digest", "foo");
    final FetchArtifactRequest fetchArtifactRequest = new FetchArtifactRequest(storeConfig, artifactMetadata, new FetchArtifactConfig());

    when(request.requestBody()).thenReturn(new Gson().toJson(fetchArtifactRequest));
    when(dockerProgressHandler.getDigest()).thenReturn("foo");

    final GoPluginApiResponse response = new FetchArtifactExecutor(request, consoleLogger, dockerProgressHandler, dockerClientFactory).execute();

    assertThat(response.responseCode()).isEqualTo(200);
    assertThat(response.responseBody()).isEqualTo("[{\"name\":\"ARTIFACT_IMAGE\",\"value\":\"localhost:5000/alpine:v1\"}]");
}
 
源代码8 项目: gocd-s3-artifacts   文件: PublishTask.java
private GoPluginApiResponse handleGetConfigRequest() {
    HashMap config = new HashMap();

    HashMap sourceDestinations = new HashMap();
    sourceDestinations.put("default-value", "");
    sourceDestinations.put("required", true);
    config.put(SOURCEDESTINATIONS, sourceDestinations);

    HashMap destinationPrefix = new HashMap();
    destinationPrefix.put("default-value", "");
    destinationPrefix.put("required", false);
    config.put(DESTINATION_PREFIX, destinationPrefix);

    HashMap artifactsBucket = new HashMap();
    artifactsBucket.put("default-value", "");
    artifactsBucket.put("required", false);
    config.put(ARTIFACTS_BUCKET, artifactsBucket);

    return createResponse(DefaultGoPluginApiResponse.SUCCESS_RESPONSE_CODE, config);
}
 
源代码9 项目: gocd-plugins   文件: DockerComposeTask.java
@Override
protected GoPluginApiResponse handleGetConfigRequest(GoPluginApiRequest request) {
    return success(new ConfigDef()
            .add(VMNAME, "", Required.YES)
            .add(SERVICE, "", Required.NO)
            .add(ENV_VARS, "", Required.NO)
            .add(COMPOSE_BUILD, "", Required.NO)
            .add(COMPOSE_FILE, "", Required.NO)
            .add(FORCE_RECREATE, "false", Required.NO)
            .add(FORCE_BUILD, "false", Required.NO)
            .add(COMPOSE_NO_CACHE, "false", Required.NO)
            .add(COMPOSE_REMOVE_VOLUMES, "false", Required.NO)
            .add(COMPOSE_DOWN, "false", Required.NO)
            .add(FORCE_PULL, "false", Required.NO)
            .add(FORCE_BUILD_ONLY, "false", Required.NO)
            .add(BUNDLE_OUTPUT_PATH, "", Required.NO)
            .toMap());
}
 
@Test
public void shouldValidateAConfigurationWithAllPrivateRegistryInfos() throws Exception {
    HashMap<String, String> properties = new HashMap<>();
    ClusterProfileValidateRequest request = new ClusterProfileValidateRequest(properties);
    properties.put("max_docker_containers", "1");
    properties.put("docker_uri", "https://api.example.com");
    properties.put("docker_ca_cert", "some ca cert");
    properties.put("docker_client_key", "some client key");
    properties.put("docker_client_cert", "sone client cert");
    properties.put("go_server_url", "https://ci.example.com/go");
    properties.put("enable_private_registry_authentication", "true");
    properties.put("private_registry_server", "server");
    properties.put("private_registry_username", "username");
    properties.put("private_registry_password", "password");
    properties.put("auto_register_timeout", "10");
    GoPluginApiResponse response = new ClusterProfileValidateRequestExecutor(request).execute();

    assertThat(response.responseCode(), is(200));
    JSONAssert.assertEquals("[]", response.responseBody(), true);
}
 
源代码11 项目: go-plugins   文件: GitPluginImpl.java
private GoPluginApiResponse handleSCMValidation(GoPluginApiRequest goPluginApiRequest) {
    Map<String, Object> responseMap = (Map<String, Object>) parseJSON(goPluginApiRequest.requestBody());
    Map<String, String> configuration = keyValuePairs(responseMap, "scm-configuration");
    final GitConfig gitConfig = getGitConfig(configuration);

    List<Map<String, Object>> response = new ArrayList<Map<String, Object>>();

    validate(response, new FieldValidator() {
        @Override
        public void validate(Map<String, Object> fieldValidation) {
            validateUrl(gitConfig, fieldValidation);
        }
    });

    return renderJSON(SUCCESS_RESPONSE_CODE, response);
}
 
public GoPluginApiResponse execute() {
    final List<String> knownFields = new ArrayList<>();
    final ValidationResult validationResult = new ValidationResult();

    for (Metadata field : GetClusterProfileMetadataExecutor.FIELDS) {
        knownFields.add(field.getKey());
        validationResult.addError(field.validate(request.getProperties().get(field.getKey())));
    }
    final Set<String> set = new HashSet<>(request.getProperties().keySet());
    set.removeAll(knownFields);

    if (!set.isEmpty()) {
        for (String key : set) {
            validationResult.addError(key, "Is an unknown property.");
        }
    }
    List<Map<String, String>> validateErrors = new PrivateDockerRegistrySettingsValidator().validate(request);
    validateErrors.forEach(error -> validationResult.addError(new ValidationError(error.get("key"), error.get("message"))));
    return DefaultGoPluginApiResponse.success(validationResult.toJSON());
}
 
@Test
@SuppressWarnings("unchecked")
public void shouldHandleApiRequestAndRenderSuccessApiResponse() {
    Revision revision = new Revision("1", new Date(), "comment", "user", "[email protected]", Collections.emptyList());
    RequestHandler checkoutRequestHandler = new GetLatestRevisionRequestHandler();
    ArgumentCaptor<Map> responseArgumentCaptor = ArgumentCaptor.forClass(Map.class);
    List<String> paths = List.of("path1", "path2");

    when(JsonUtils.renderSuccessApiResponse(responseArgumentCaptor.capture())).thenReturn(mock(GoPluginApiResponse.class));
    when(JsonUtils.getPaths(pluginApiRequestMock)).thenReturn(paths);
    when(gitConfigMock.getUrl()).thenReturn("https://github.com/TWChennai/gocd-git-path-material-plugin.git");
    when(jGitHelperMock.getLatestRevision(any())).thenReturn(revision);

    checkoutRequestHandler.handle(pluginApiRequestMock);

    verify(jGitHelperMock).cloneOrFetch();
    verify(jGitHelperMock).getLatestRevision(paths);

    Map<String, Object> responseMap = responseArgumentCaptor.getValue();
    assertThat(responseMap.size(), is(1));
}
 
public GoPluginApiResponse execute() {
    String elasticAgentId = request.getElasticAgentId();
    JobIdentifier jobIdentifier = request.getJobIdentifier();
    LOG.info(format("[status-report] Generating status report for agent: {0} with job: {1}", elasticAgentId, jobIdentifier));
    KubernetesClient client = factory.client(request.clusterProfileProperties());

    try {
        Pod pod;
        if (StringUtils.isNotBlank(elasticAgentId)) {
            pod = findPodUsingElasticAgentId(elasticAgentId, client);
        } else {
            pod = findPodUsingJobIdentifier(jobIdentifier, client);
        }

        KubernetesElasticAgent elasticAgent = KubernetesElasticAgent.fromPod(client, pod, jobIdentifier);

        final String statusReportView = statusReportViewBuilder.build(statusReportViewBuilder.getTemplate("agent-status-report.template.ftlh"), elasticAgent);

        final JsonObject responseJSON = new JsonObject();
        responseJSON.addProperty("view", statusReportView);

        return DefaultGoPluginApiResponse.success(responseJSON.toString());
    } catch (Exception e) {
        return StatusReportGenerationErrorHandler.handle(statusReportViewBuilder, e);
    }
}
 
源代码15 项目: go-plugins   文件: PluginWithInvalidId.java
@Override
public GoPluginApiResponse handle(GoPluginApiRequest goPluginApiRequest) throws UnhandledRequestTypeException {
    return new GoPluginApiResponse() {
        @Override
        public int responseCode() {
            return 200;
        }

        @Override
        public Map<String, String> responseHeaders() {
            return null;
        }

        @Override
        public String responseBody() {
            return "{}";
        }
    };
}
 
@Override
public GoPluginApiResponse handle(GoPluginApiRequest goPluginApiRequest) {
    String requestName = goPluginApiRequest.requestName();
    if (requestName.equals(PLUGIN_CONFIGURATION)) {
        return handlePluginConfigurationRequest();
    } else if (requestName.equals(SEARCH_USER)) {
        return handleSearchUserRequest(goPluginApiRequest);
    } else if (requestName.equals(AUTHENTICATE_USER)) {
        return handleAuthenticateUserRequest(goPluginApiRequest);
    } else if (requestName.equals(WEB_REQUEST_INDEX)) {
        return handleSetupLoginWebRequest(goPluginApiRequest);
    } else if (requestName.equals(WEB_REQUEST_AUTHENTICATE)) {
        return handleAuthenticateWebRequest(goPluginApiRequest);
    }
    return renderResponse(404, null, null);
}
 
@Test
public void shouldPopulateNoOpClusterProfileWithPluginSettingsConfigurations_WithoutChangingClusterProfileIdIfItsNotNoOp() throws Exception {
    String clusterProfileId = "i-renamed-no-op-cluster-to-something-else";
    ClusterProfile emptyClusterProfile = new ClusterProfile(clusterProfileId, Constants.PLUGIN_ID, new PluginSettings());
    elasticAgentProfile.setClusterProfileId(emptyClusterProfile.getId());
    MigrateConfigurationRequest request = new MigrateConfigurationRequest(pluginSettings, Collections.singletonList(emptyClusterProfile), Collections.singletonList(elasticAgentProfile));
    MigrateConfigurationRequestExecutor executor = new MigrateConfigurationRequestExecutor(request);

    GoPluginApiResponse response = executor.execute();

    MigrateConfigurationRequest responseObject = MigrateConfigurationRequest.fromJSON(response.responseBody());

    assertThat(responseObject.getPluginSettings(), is(pluginSettings));
    List<ClusterProfile> actual = responseObject.getClusterProfiles();
    ClusterProfile actualClusterProfile = actual.get(0);

    assertThat(actualClusterProfile.getId(), is(clusterProfileId));
    this.clusterProfile.setId(actualClusterProfile.getId());

    assertThat(actual, is(Collections.singletonList(this.clusterProfile)));
    assertThat(responseObject.getElasticAgentProfiles(), is(Collections.singletonList(elasticAgentProfile)));

    assertThat(elasticAgentProfile.getClusterProfileId(), is(clusterProfileId));
}
 
@Test
public void shouldMigratePluginSettingsToClusterProfile_WhenNoElasticAgentProfilesAreConfigured() throws Exception {
    MigrateConfigurationRequest request = new MigrateConfigurationRequest(pluginSettings, Collections.emptyList(), Collections.emptyList());
    MigrateConfigurationRequestExecutor executor = new MigrateConfigurationRequestExecutor(request);

    GoPluginApiResponse response = executor.execute();

    MigrateConfigurationRequest responseObject = MigrateConfigurationRequest.fromJSON(response.responseBody());

    assertThat(responseObject.getPluginSettings(), is(pluginSettings));
    List<ClusterProfile> actual = responseObject.getClusterProfiles();
    ClusterProfile actualClusterProfile = actual.get(0);
    this.clusterProfile.setId(actualClusterProfile.getId());

    assertThat(actual, is(Collections.singletonList(this.clusterProfile)));
    assertThat(responseObject.getElasticAgentProfiles(), is(Collections.emptyList()));
}
 
源代码19 项目: gocd-s3-artifacts   文件: PublishTask.java
private GoPluginApiResponse handleGetConfigRequest() {
    HashMap config = new HashMap();

    HashMap sourceDestinations = new HashMap();
    sourceDestinations.put("default-value", "");
    sourceDestinations.put("required", true);
    config.put(SOURCEDESTINATIONS, sourceDestinations);

    HashMap destinationPrefix = new HashMap();
    destinationPrefix.put("default-value", "");
    destinationPrefix.put("required", false);
    config.put(DESTINATION_PREFIX, destinationPrefix);

    HashMap artifactsBucket = new HashMap();
    artifactsBucket.put("default-value", "");
    artifactsBucket.put("required", false);
    config.put(ARTIFACTS_BUCKET, artifactsBucket);

    return createResponse(DefaultGoPluginApiResponse.SUCCESS_RESPONSE_CODE, config);
}
 
源代码20 项目: gocd   文件: DummyClassProvidingAnonymousClass.java
public static GoPlugin getAnonymousClass() {
    return new GoPlugin() {
        @Override
        public void initializeGoApplicationAccessor(GoApplicationAccessor goApplicationAccessor) {
        }

        @Override
        public GoPluginApiResponse handle(GoPluginApiRequest requestMessage) throws UnhandledRequestTypeException {
            return null;
        }

        @Override
        public GoPluginIdentifier pluginIdentifier() {
            return null;
        }
    };
}
 
源代码21 项目: go-plugins   文件: Plugin1.java
@Override
public GoPluginApiResponse handle(GoPluginApiRequest goPluginApiRequest) throws UnhandledRequestTypeException {

    if ("configuration".equals(goPluginApiRequest.requestName())) {
        HashMap<String, Object> config = new HashMap<>();

        HashMap<String, Object> url = new HashMap<>();
        url.put("display-order", "0");
        url.put("display-name", "Url");
        url.put("required", true);
        config.put("Url", url);
        return DefaultGoPluginApiResponse.success(new GsonBuilder().create().toJson(config));
    } else if ("view".equals(goPluginApiRequest.requestName())) {
        return getViewRequest();
    }
    throw new UnhandledRequestTypeException(goPluginApiRequest.requestName());
}
 
@Test
public void shouldSupportAgentAndPluginStatusReport() throws Exception {
    GoPluginApiResponse response = new GetCapabilitiesExecutor().execute();

    String expectedJSON = "{\n" +
            "    \"supports_plugin_status_report\":false\n," +
            "    \"supports_cluster_status_report\":true\n," +
            "    \"supports_agent_status_report\":true\n" +
            "}";

    JSONAssert.assertEquals(expectedJSON, response.responseBody(), true);
}
 
@Test
public void shouldRespondSuccessToGetConfigurationRequest() throws UnhandledRequestTypeException {
    DefaultGoPluginApiRequest getConfigRequest = new DefaultGoPluginApiRequest("configrepo", "1.0", "go.plugin-settings.get-configuration");

    GoPluginApiResponse response = plugin.handle(getConfigRequest);
    assertThat(response.responseCode(), is(SUCCESS_RESPONSE_CODE));
}
 
@Override
public GoPluginApiResponse execute() throws Exception {
    LOG.info("[server-ping] Starting execute server ping request.");
    List<ClusterProfileProperties> allClusterProfileProperties = serverPingRequest.allClusterProfileProperties();

    for (ClusterProfileProperties clusterProfileProperties : allClusterProfileProperties) {
        performCleanupForACluster(clusterProfileProperties, clusterSpecificAgentInstances.get(clusterProfileProperties.uuid()));
    }

    CheckForPossiblyMissingAgents();
    return DefaultGoPluginApiResponse.success("");
}
 
@Override
public GoPluginApiResponse execute() {
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("template", Util.readResource("/profile.template.html"));
    DefaultGoPluginApiResponse defaultGoPluginApiResponse = new DefaultGoPluginApiResponse(200, GSON.toJson(jsonObject));
    return defaultGoPluginApiResponse;
}
 
public GoPluginApiResponse execute() {
    final GitHubConfiguration gitHubConfiguration = request.githubConfiguration();
    final ValidationResult validationResult = new MetadataValidator().validate(gitHubConfiguration);

    if (gitHubConfiguration.authenticateWith() == AuthenticateWith.GITHUB_ENTERPRISE && Util.isBlank(gitHubConfiguration.gitHubEnterpriseUrl())) {
        validationResult.addError("GitHubEnterpriseUrl", "GitHubEnterpriseUrl must not be blank.");
    }

    if (Util.isBlank(gitHubConfiguration.personalAccessToken())) {
        validationResult.addError("PersonalAccessToken", "PersonalAccessToken must not be blank.");
    }

    return DefaultGoPluginApiResponse.success(validationResult.toJSON());
}
 
@Test
@SuppressWarnings("unchecked")
public void shouldReturnSuccessJsonResponseForScmViewRequest() throws IOException {
    String template = IOUtils.toString(getClass().getResourceAsStream("/scm.template.html"), StandardCharsets.UTF_8);
    GoPluginApiRequest apiRequest = mock(GoPluginApiRequest.class);
    RequestHandler requestHandler = new SCMViewRequestHandler();

    GoPluginApiResponse apiResponse = requestHandler.handle(apiRequest);

    Map<String, Object> response = JsonHelper.getResponse(apiResponse);
    assertThat(apiResponse.responseCode(), is(equalTo(200)));
    assertThat(response, hasEntry("displayValue", SCMViewRequestHandler.PLUGIN_NAME));
    assertThat(response, hasEntry("template", template));
}
 
@Test
public void shouldValidateValidEnvironmentVariablePrefix() throws Exception {
    String requestBody = new JSONObject().put("EnvironmentVariablePrefix", "ENVIRONMENT_VARIABLE").toString();
    when(request.requestBody()).thenReturn(requestBody);

    final GoPluginApiResponse response = new ValidateFetchArtifactConfigExecutor(request).execute();

    String expectedJSON = "[]";
    JSONAssert.assertEquals(expectedJSON, response.responseBody(), JSONCompareMode.NON_EXTENSIBLE);
}
 
@Test
public void shouldRespondSuccessToParseDirectoryRequestWhenAliasesCaseFile() throws UnhandledRequestTypeException,
        IOException {
    GoPluginApiResponse response = parseAndGetResponseForDir(setupCase("aliases"));

    assertThat(response.responseCode(), is(SUCCESS_RESPONSE_CODE));
    JsonObject responseJsonObject = getJsonObjectFromResponse(response);
    assertNoError(responseJsonObject);
    JsonArray pipelines = responseJsonObject.get("pipelines").getAsJsonArray();
    assertThat(pipelines.size(), is(1));
    JsonObject expected = (JsonObject) readJsonObject("examples.out/aliases.gocd.json");
    assertThat(responseJsonObject, is(new JsonObjectMatcher(expected)));
}
 
private GoPluginApiResponse getStatusReportUsingJobIdentifier(JobIdentifier jobIdentifier) throws Exception {
    Optional<DockerContainer> dockerContainer = dockerContainers.find(jobIdentifier);
    if (dockerContainer.isPresent()) {
        AgentStatusReport agentStatusReport = dockerContainers.getAgentStatusReport(request.getClusterProfile(), dockerContainer.get());
        final String statusReportView = viewBuilder.build(viewBuilder.getTemplate("agent-status-report.template.ftlh"), agentStatusReport);
        return constructResponseForReport(statusReportView);
    }

    return containerNotFoundApiResponse(jobIdentifier);
}