Example usage for org.springframework.restdocs.operation.preprocess Preprocessors preprocessRequest

List of usage examples for org.springframework.restdocs.operation.preprocess Preprocessors preprocessRequest

Introduction

In this page you can find the example usage for org.springframework.restdocs.operation.preprocess Preprocessors preprocessRequest.

Prototype

public static OperationRequestPreprocessor preprocessRequest(OperationPreprocessor... preprocessors) 

Source Link

Document

Returns an OperationRequestPreprocessor that will preprocess the request by applying the given preprocessors to it.

Usage

From source file:com.netflix.genie.web.controllers.ApplicationRestControllerIntegrationTests.java

/**
 * Test to make sure we can delete a tag for an application after it is created.
 *
 * @throws Exception on configuration problems
 *//*from w  w w.  j  a  v a2  s.c  o  m*/
@Test
public void canDeleteTagForApplication() throws Exception {
    Assert.assertThat(this.jpaApplicationRepository.count(), Matchers.is(0L));
    this.createConfigResource(
            new Application.Builder(NAME, USER, VERSION, ApplicationStatus.ACTIVE).withId(ID).build(), null);
    final String api = APPLICATIONS_API + "/{id}/tags";

    final RestDocumentationResultHandler deleteResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.ID_PATH_PARAM
                    .and(RequestDocumentation.parameterWithName("tag").description("The tag to remove")));
    this.canDeleteTagForResource(api, ID, NAME, deleteResultHandler);
}

From source file:com.netflix.genie.web.controllers.ClusterRestControllerIntegrationTests.java

/**
 * Make sure can set the commands for a cluster.
 *
 * @throws Exception on configuration error
 *///from   ww  w . ja  v a  2 s  . c o m
@Test
public void canSetCommandsForACluster() throws Exception {
    this.createConfigResource(new Cluster.Builder(NAME, USER, VERSION, ClusterStatus.UP).withId(ID).build(),
            null);
    final String clusterCommandsAPI = CLUSTERS_API + "/{id}/commands";
    this.mvc.perform(MockMvcRequestBuilders.get(clusterCommandsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));

    final String placeholder = UUID.randomUUID().toString();
    final String commandId1 = UUID.randomUUID().toString();
    final String commandId2 = UUID.randomUUID().toString();
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 4000L)
                    .withId(commandId1).build(),
            null);
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 5000L)
                    .withId(commandId2).build(),
            null);

    final RestDocumentationResultHandler setResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.CONTENT_TYPE_HEADER, // Request Headers
            Snippets.ID_PATH_PARAM, // Path parameters
            PayloadDocumentation.requestFields(PayloadDocumentation.fieldWithPath("[]").description(
                    "Array of command ids (in preferred order) to replace the existing list of commands")
                    .attributes(Snippets.EMPTY_CONSTRAINTS)) // Request payload
    );

    this.mvc.perform(
            RestDocumentationRequestBuilders.put(clusterCommandsAPI, ID).contentType(MediaType.APPLICATION_JSON)
                    .content(this.objectMapper.writeValueAsBytes(Lists.newArrayList(commandId1, commandId2))))
            .andExpect(MockMvcResultMatchers.status().isNoContent()).andDo(setResultHandler);

    this.mvc.perform(MockMvcRequestBuilders.get(clusterCommandsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(commandId1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].id", Matchers.is(commandId2)));

    //Should clear commands
    this.mvc.perform(MockMvcRequestBuilders.put(clusterCommandsAPI, ID).contentType(MediaType.APPLICATION_JSON)
            .content(this.objectMapper.writeValueAsBytes(Lists.newArrayList())))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    this.mvc.perform(MockMvcRequestBuilders.get(clusterCommandsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));
}

From source file:com.netflix.genie.web.controllers.JobRestControllerIntegrationTests.java

/**
 * Test the job submit method for when the job is killed by sending a DELETE HTTP call.
 *
 * @throws Exception If there is a problem.
 *///from  w w  w  .j  a  v a2  s. co  m
@Test
public void testSubmitJobMethodKill() throws Exception {
    Assume.assumeTrue(SystemUtils.IS_OS_UNIX);
    final String commandArgs = "-c 'sleep 60'";

    final List<ClusterCriteria> clusterCriteriaList = new ArrayList<>();
    final Set<String> clusterTags = new HashSet<>();
    clusterTags.add("localhost");
    final ClusterCriteria clusterCriteria = new ClusterCriteria(clusterTags);
    clusterCriteriaList.add(clusterCriteria);

    final Set<String> commandCriteria = new HashSet<>();
    commandCriteria.add("bash");
    final JobRequest jobRequest = new JobRequest.Builder(JOB_NAME, JOB_USER, JOB_VERSION, commandArgs,
            clusterCriteriaList, commandCriteria).withDisableLogArchival(true).build();

    final MvcResult result = this.mvc
            .perform(MockMvcRequestBuilders.post(JOBS_API).contentType(MediaType.APPLICATION_JSON)
                    .content(this.objectMapper.writeValueAsBytes(jobRequest)))
            .andExpect(MockMvcResultMatchers.status().isAccepted())
            .andExpect(MockMvcResultMatchers.header().string(HttpHeaders.LOCATION, Matchers.notNullValue()))
            .andReturn();

    final String jobId = this.getIdFromLocation(result.getResponse().getHeader(HttpHeaders.LOCATION));
    this.waitForRunning(jobId);

    // Let it run for a couple of seconds
    Thread.sleep(2000);

    // Send a kill request to the job.
    final RestDocumentationResultHandler killResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/killJob/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.ID_PATH_PARAM);
    this.mvc.perform(RestDocumentationRequestBuilders.delete(JOBS_API + "/{id}", jobId))
            .andExpect(MockMvcResultMatchers.status().isAccepted()).andDo(killResultHandler);

    this.waitForDone(jobId);

    this.mvc.perform(MockMvcRequestBuilders.get(JOBS_API + "/" + jobId))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath(ID_PATH, Matchers.is(jobId)))
            .andExpect(MockMvcResultMatchers.jsonPath(STATUS_PATH, Matchers.is(JobStatus.KILLED.toString())));

    // Kill the job again to make sure it doesn't cause a problem.
    this.mvc.perform(MockMvcRequestBuilders.delete(JOBS_API + "/" + jobId))
            .andExpect(MockMvcResultMatchers.status().isAccepted());
}

From source file:com.netflix.genie.web.controllers.ApplicationRestControllerIntegrationTests.java

/**
 * Make sure can get all the commands which use a given application.
 *
 * @throws Exception on configuration error
 *///  ww  w.  ja v  a 2 s.  c  om
@Test
public void canGetCommandsForApplication() throws Exception {
    this.createConfigResource(
            new Application.Builder(NAME, USER, VERSION, ApplicationStatus.ACTIVE).withId(ID).build(), null);
    final String placeholder = UUID.randomUUID().toString();
    final String command1Id = UUID.randomUUID().toString();
    final String command2Id = UUID.randomUUID().toString();
    final String command3Id = UUID.randomUUID().toString();
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 1000L)
                    .withId(command1Id).build(),
            null);
    this.createConfigResource(new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.INACTIVE,
            placeholder, 1100L).withId(command2Id).build(), null);
    this.createConfigResource(new Command.Builder(placeholder, placeholder, placeholder,
            CommandStatus.DEPRECATED, placeholder, 1200L).withId(command3Id).build(), null);

    final Set<String> appIds = Sets.newHashSet(ID);
    this.mvc.perform(MockMvcRequestBuilders.post(COMMANDS_API + "/" + command1Id + "/applications")
            .contentType(MediaType.APPLICATION_JSON).content(this.objectMapper.writeValueAsBytes(appIds)))
            .andExpect(MockMvcResultMatchers.status().isNoContent());
    this.mvc.perform(MockMvcRequestBuilders.post(COMMANDS_API + "/" + command3Id + "/applications")
            .contentType(MediaType.APPLICATION_JSON).content(this.objectMapper.writeValueAsBytes(appIds)))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    final String applicationCommandsAPI = APPLICATIONS_API + "/{id}/commands";

    Arrays.asList(
            this.objectMapper.readValue(this.mvc.perform(MockMvcRequestBuilders.get(applicationCommandsAPI, ID))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
                    .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(2))).andReturn()
                    .getResponse().getContentAsByteArray(), Command[].class))
            .forEach(command -> {
                if (!command.getId().orElseThrow(IllegalArgumentException::new).equals(command1Id)
                        && !command.getId().orElseThrow(IllegalArgumentException::new).equals(command3Id)) {
                    Assert.fail();
                }
            });

    // Filter by status
    final RestDocumentationResultHandler getResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.ID_PATH_PARAM, // Path parameters
            RequestDocumentation.requestParameters(RequestDocumentation.parameterWithName("status")
                    .description("The status of commands to search for")
                    .attributes(Attributes.key(Snippets.CONSTRAINTS).value(CommandStatus.values())).optional()), // Query Parameters
            Snippets.HAL_CONTENT_TYPE_HEADER, // Response Headers
            PayloadDocumentation.responseFields(PayloadDocumentation.fieldWithPath("[]")
                    .description("The list of commands found").attributes(Snippets.EMPTY_CONSTRAINTS)));
    this.mvc.perform(RestDocumentationRequestBuilders.get(applicationCommandsAPI, ID).param("status",
            CommandStatus.ACTIVE.toString(), CommandStatus.INACTIVE.toString()))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(command1Id)))
            .andDo(getResultHandler);
}

From source file:com.netflix.genie.web.controllers.ClusterRestControllerIntegrationTests.java

/**
 * Make sure that we can remove all the commands from a cluster.
 *
 * @throws Exception on configuration error
 *//*from   w  w w .  j  a v  a2s.co  m*/
@Test
public void canRemoveCommandsFromACluster() throws Exception {
    this.createConfigResource(new Cluster.Builder(NAME, USER, VERSION, ClusterStatus.UP).withId(ID).build(),
            null);
    final String clusterCommandsAPI = CLUSTERS_API + "/{id}/commands";

    final String placeholder = UUID.randomUUID().toString();
    final String commandId1 = UUID.randomUUID().toString();
    final String commandId2 = UUID.randomUUID().toString();
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 7000L)
                    .withId(commandId1).build(),
            null);
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 8000L)
                    .withId(commandId2).build(),
            null);

    this.mvc.perform(MockMvcRequestBuilders.post(clusterCommandsAPI, ID).contentType(MediaType.APPLICATION_JSON)
            .content(objectMapper.writeValueAsBytes(Lists.newArrayList(commandId1, commandId2))))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    final RestDocumentationResultHandler deleteResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.ID_PATH_PARAM // Path parameters
    );

    this.mvc.perform(RestDocumentationRequestBuilders.delete(clusterCommandsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isNoContent()).andDo(deleteResultHandler);

    this.mvc.perform(MockMvcRequestBuilders.get(clusterCommandsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));
}

From source file:com.netflix.genie.web.controllers.CommandRestControllerIntegrationTests.java

/**
 * Make sure can set the applications for a command.
 *
 * @throws Exception on configuration error
 *//*from   w ww  .j a v  a  2  s .  c om*/
@Test
public void canSetApplicationsForACommand() throws Exception {
    this.createConfigResource(
            new Command.Builder(NAME, USER, VERSION, CommandStatus.ACTIVE, EXECUTABLE, CHECK_DELAY).withId(ID)
                    .build(),
            null);
    final String commandApplicationsAPI = COMMANDS_API + "/{id}/applications";
    this.mvc.perform(MockMvcRequestBuilders.get(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));

    final String placeholder = UUID.randomUUID().toString();
    final String applicationId1 = UUID.randomUUID().toString();
    final String applicationId2 = UUID.randomUUID().toString();
    final String applicationId3 = UUID.randomUUID().toString();
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId1).build(),
            null);
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId2).build(),
            null);
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId3).build(),
            null);

    final RestDocumentationResultHandler setResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.CONTENT_TYPE_HEADER, // Request Headers
            Snippets.ID_PATH_PARAM, // Path parameters
            PayloadDocumentation.requestFields(PayloadDocumentation.fieldWithPath("[]")
                    .description("Array of application ids to replace the existing set of applications with")
                    .attributes(Snippets.EMPTY_CONSTRAINTS)) // Request payload
    );

    this.mvc.perform(RestDocumentationRequestBuilders.put(commandApplicationsAPI, ID)
            .contentType(MediaType.APPLICATION_JSON)
            .content(this.objectMapper.writeValueAsBytes(Lists.newArrayList(applicationId1, applicationId2))))
            .andExpect(MockMvcResultMatchers.status().isNoContent()).andDo(setResultHandler);

    this.mvc.perform(MockMvcRequestBuilders.get(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(applicationId1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].id", Matchers.is(applicationId2)));

    // Should flip the order
    this.mvc.perform(
            MockMvcRequestBuilders.put(commandApplicationsAPI, ID).contentType(MediaType.APPLICATION_JSON)
                    .content(this.objectMapper
                            .writeValueAsBytes(Lists.newArrayList(applicationId2, applicationId1))))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    this.mvc.perform(MockMvcRequestBuilders.get(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(applicationId2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].id", Matchers.is(applicationId1)));

    // Should reorder and add a new one
    this.mvc.perform(
            MockMvcRequestBuilders.put(commandApplicationsAPI, ID).contentType(MediaType.APPLICATION_JSON)
                    .content(objectMapper.writeValueAsBytes(
                            Lists.newArrayList(applicationId1, applicationId2, applicationId3))))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    this.mvc.perform(MockMvcRequestBuilders.get(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(3)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(applicationId1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].id", Matchers.is(applicationId2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[2].id", Matchers.is(applicationId3)));

    //Should clear applications
    this.mvc.perform(
            MockMvcRequestBuilders.put(commandApplicationsAPI, ID).contentType(MediaType.APPLICATION_JSON)
                    .content(objectMapper.writeValueAsBytes(Lists.newArrayList())))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    this.mvc.perform(MockMvcRequestBuilders.get(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));
}

From source file:com.netflix.genie.web.controllers.ClusterRestControllerIntegrationTests.java

/**
 * Make sure that we can remove a command from a cluster.
 *
 * @throws Exception on configuration error
 *//*from  ww w  .  ja  v a2s  .co  m*/
@Test
public void canRemoveCommandFromACluster() throws Exception {
    this.createConfigResource(new Cluster.Builder(NAME, USER, VERSION, ClusterStatus.UP).withId(ID).build(),
            null);
    final String clusterCommandsAPI = CLUSTERS_API + "/{id}/commands";

    final String placeholder = UUID.randomUUID().toString();
    final String commandId1 = UUID.randomUUID().toString();
    final String commandId2 = UUID.randomUUID().toString();
    final String commandId3 = UUID.randomUUID().toString();
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 1000L)
                    .withId(commandId1).build(),
            null);
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 2000L)
                    .withId(commandId2).build(),
            null);
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 3000L)
                    .withId(commandId3).build(),
            null);

    this.mvc.perform(MockMvcRequestBuilders.post(clusterCommandsAPI, ID).contentType(MediaType.APPLICATION_JSON)
            .content(this.objectMapper
                    .writeValueAsBytes(Lists.newArrayList(commandId1, commandId2, commandId3))))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    final RestDocumentationResultHandler deleteResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()),
            Snippets.ID_PATH_PARAM.and(RequestDocumentation.parameterWithName("commandId")
                    .description("The id of the command to remove")) // Path parameters
    );

    this.mvc.perform(
            RestDocumentationRequestBuilders.delete(clusterCommandsAPI + "/{commandId}", ID, commandId2))
            .andExpect(MockMvcResultMatchers.status().isNoContent()).andDo(deleteResultHandler);

    this.mvc.perform(MockMvcRequestBuilders.get(clusterCommandsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(commandId1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].id", Matchers.is(commandId3)));

    // Check reverse side of relationship
    this.mvc.perform(MockMvcRequestBuilders.get(COMMANDS_API + "/{id}/clusters", commandId1))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(ID)));

    this.mvc.perform(MockMvcRequestBuilders.get(COMMANDS_API + "/{id}/clusters", commandId2))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));

    this.mvc.perform(MockMvcRequestBuilders.get(COMMANDS_API + "/{id}/clusters", commandId3))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(ID)));
}

From source file:com.netflix.genie.web.controllers.CommandRestControllerIntegrationTests.java

/**
 * Make sure that we can remove all the applications from a command.
 *
 * @throws Exception on configuration error
 *///from   w w w .ja v a 2  s .  co m
@Test
public void canRemoveApplicationsFromACommand() throws Exception {
    this.createConfigResource(
            new Command.Builder(NAME, USER, VERSION, CommandStatus.ACTIVE, EXECUTABLE, CHECK_DELAY).withId(ID)
                    .build(),
            null);
    final String commandApplicationsAPI = COMMANDS_API + "/{id}/applications";

    final String placeholder = UUID.randomUUID().toString();
    final String applicationId1 = UUID.randomUUID().toString();
    final String applicationId2 = UUID.randomUUID().toString();
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId1).build(),
            null);
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId2).build(),
            null);

    this.mvc.perform(MockMvcRequestBuilders.post(commandApplicationsAPI, ID)
            .contentType(MediaType.APPLICATION_JSON)
            .content(objectMapper.writeValueAsBytes(Lists.newArrayList(applicationId1, applicationId2))))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    final RestDocumentationResultHandler deleteResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.ID_PATH_PARAM // Path parameters
    );

    this.mvc.perform(RestDocumentationRequestBuilders.delete(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isNoContent()).andDo(deleteResultHandler);

    this.mvc.perform(MockMvcRequestBuilders.get(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));
}

From source file:com.netflix.genie.web.controllers.CommandRestControllerIntegrationTests.java

/**
 * Make sure that we can remove an application from a command.
 *
 * @throws Exception on configuration error
 *//*from ww  w  .ja  v a2  s.com*/
@Test
public void canRemoveApplicationFromACommand() throws Exception {
    this.createConfigResource(
            new Command.Builder(NAME, USER, VERSION, CommandStatus.ACTIVE, EXECUTABLE, CHECK_DELAY).withId(ID)
                    .build(),
            null);
    final String commandApplicationsAPI = COMMANDS_API + "/{id}/applications";

    final String placeholder = UUID.randomUUID().toString();
    final String applicationId1 = UUID.randomUUID().toString();
    final String applicationId2 = UUID.randomUUID().toString();
    final String applicationId3 = UUID.randomUUID().toString();
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId1).build(),
            null);
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId2).build(),
            null);
    this.createConfigResource(
            new Application.Builder(placeholder, placeholder, placeholder, ApplicationStatus.ACTIVE)
                    .withId(applicationId3).build(),
            null);

    this.mvc.perform(
            MockMvcRequestBuilders.post(commandApplicationsAPI, ID).contentType(MediaType.APPLICATION_JSON)
                    .content(this.objectMapper.writeValueAsBytes(
                            Lists.newArrayList(applicationId1, applicationId2, applicationId3))))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    final RestDocumentationResultHandler deleteResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()),
            Snippets.ID_PATH_PARAM.and(RequestDocumentation.parameterWithName("applicationId")
                    .description("The id of the application to remove")) // Path parameters
    );

    this.mvc.perform(RestDocumentationRequestBuilders.delete(commandApplicationsAPI + "/{applicationId}", ID,
            applicationId2)).andExpect(MockMvcResultMatchers.status().isNoContent()).andDo(deleteResultHandler);

    this.mvc.perform(MockMvcRequestBuilders.get(commandApplicationsAPI, ID))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(applicationId1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].id", Matchers.is(applicationId3)));

    // Check reverse side of relationship
    this.mvc.perform(MockMvcRequestBuilders.get(APPLICATIONS_API + "/{id}/commands", applicationId1))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(ID)));

    this.mvc.perform(MockMvcRequestBuilders.get(APPLICATIONS_API + "/{id}/commands", applicationId2))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.empty()));

    this.mvc.perform(MockMvcRequestBuilders.get(APPLICATIONS_API + "/{id}/commands", applicationId3))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(ID)));
}

From source file:com.netflix.genie.web.controllers.CommandRestControllerIntegrationTests.java

/**
 * Make sure can get all the clusters which use a given command.
 *
 * @throws Exception on configuration error
 *///from w w  w.j a  v  a2 s.  c  o m
@Test
public void canGetClustersForCommand() throws Exception {
    this.createConfigResource(
            new Command.Builder(NAME, USER, VERSION, CommandStatus.ACTIVE, EXECUTABLE, CHECK_DELAY).withId(ID)
                    .build(),
            null);
    final String placeholder = UUID.randomUUID().toString();
    final String cluster1Id = UUID.randomUUID().toString();
    final String cluster2Id = UUID.randomUUID().toString();
    final String cluster3Id = UUID.randomUUID().toString();
    this.createConfigResource(new Cluster.Builder(placeholder, placeholder, placeholder, ClusterStatus.UP)
            .withId(cluster1Id).build(), null);
    this.createConfigResource(
            new Cluster.Builder(placeholder, placeholder, placeholder, ClusterStatus.OUT_OF_SERVICE)
                    .withId(cluster2Id).build(),
            null);
    this.createConfigResource(
            new Cluster.Builder(placeholder, placeholder, placeholder, ClusterStatus.TERMINATED)
                    .withId(cluster3Id).build(),
            null);

    final List<String> commandIds = Lists.newArrayList(ID);
    this.mvc.perform(MockMvcRequestBuilders.post(CLUSTERS_API + "/" + cluster1Id + "/commands")
            .contentType(MediaType.APPLICATION_JSON).content(this.objectMapper.writeValueAsBytes(commandIds)))
            .andExpect(MockMvcResultMatchers.status().isNoContent());
    this.mvc.perform(MockMvcRequestBuilders.post(CLUSTERS_API + "/" + cluster3Id + "/commands")
            .contentType(MediaType.APPLICATION_JSON).content(this.objectMapper.writeValueAsBytes(commandIds)))
            .andExpect(MockMvcResultMatchers.status().isNoContent());

    Arrays.stream(
            this.objectMapper
                    .readValue(
                            this.mvc.perform(MockMvcRequestBuilders.get(COMMANDS_API + "/" + ID + "/clusters"))
                                    .andExpect(MockMvcResultMatchers.status().isOk())
                                    .andExpect(MockMvcResultMatchers.content()
                                            .contentTypeCompatibleWith(MediaTypes.HAL_JSON))
                                    .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(2)))
                                    .andReturn().getResponse().getContentAsByteArray(),
                            ClusterResource[].class))
            .map(ClusterResource::getContent).forEach(cluster -> {
                final String id = cluster.getId().orElseThrow(IllegalArgumentException::new);
                if (!id.equals(cluster1Id) && !id.equals(cluster3Id)) {
                    Assert.fail();
                }
            });

    // Test filtering
    final RestDocumentationResultHandler getResultHandler = MockMvcRestDocumentation.document(
            "{class-name}/{method-name}/{step}/", Preprocessors.preprocessRequest(Preprocessors.prettyPrint()),
            Preprocessors.preprocessResponse(Preprocessors.prettyPrint()), Snippets.ID_PATH_PARAM, // Path parameters
            RequestDocumentation.requestParameters(RequestDocumentation.parameterWithName("status")
                    .description("The status of clusters to search for")
                    .attributes(Attributes.key(Snippets.CONSTRAINTS).value(CommandStatus.values())).optional()), // Query Parameters
            Snippets.HAL_CONTENT_TYPE_HEADER, // Response Headers
            PayloadDocumentation.responseFields(PayloadDocumentation.fieldWithPath("[]")
                    .description("The list of clusters found").attributes(Snippets.EMPTY_CONSTRAINTS)));
    this.mvc.perform(RestDocumentationRequestBuilders.get(COMMANDS_API + "/{id}/clusters", ID).param("status",
            ClusterStatus.UP.toString())).andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentTypeCompatibleWith(MediaTypes.HAL_JSON))
            .andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.hasSize(1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(cluster1Id)))
            .andDo(getResultHandler);
}