Example usage for org.springframework.restdocs.snippet Attributes key

List of usage examples for org.springframework.restdocs.snippet Attributes key

Introduction

In this page you can find the example usage for org.springframework.restdocs.snippet Attributes key.

Prototype

public static AttributeBuilder key(String key) 

Source Link

Document

Creates an attribute with the given key .

Usage

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

static ResponseFieldsSnippet getApplicationResponsePayload() {
    return PayloadDocumentation.responseFields(getApplicationFieldDescriptors())
            .and(PayloadDocumentation.fieldWithPath("_links").attributes(Attributes.key(CONSTRAINTS).value(""))
                    .description("<<_hateoas,Links>> to other resources.").ignored());
}

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

static ResponseFieldsSnippet getClusterResponsePayload() {
    return PayloadDocumentation.responseFields(getClusterFieldDescriptors())
            .and(PayloadDocumentation.fieldWithPath("_links").attributes(Attributes.key(CONSTRAINTS).value(""))
                    .description("<<_hateoas,Links>> to other resources.").ignored());
}

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

static ResponseFieldsSnippet getCommandResponsePayload() {
    return PayloadDocumentation.responseFields(getCommandFieldDescriptors())
            .and(PayloadDocumentation.fieldWithPath("_links").attributes(Attributes.key(CONSTRAINTS).value(""))
                    .description("<<_hateoas,Links>> to other resources.").ignored());
}

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

static ResponseFieldsSnippet getJobRequestResponsePayload() {
    return PayloadDocumentation.responseFields(getJobRequestFieldDescriptors())
            .and(PayloadDocumentation.fieldWithPath("_links").attributes(Attributes.key(CONSTRAINTS).value(""))
                    .description("<<_hateoas,Links>> to other resources.").ignored());
}

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

static ResponseFieldsSnippet getJobResponsePayload() {
    return PayloadDocumentation.responseFields(getJobFieldDescriptors())
            .and(PayloadDocumentation.fieldWithPath("_links").attributes(Attributes.key(CONSTRAINTS).value(""))
                    .description("<<_hateoas,Links>> to other resources.").ignored());
}

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

static ResponseFieldsSnippet getJobExecutionResponsePayload() {
    return PayloadDocumentation.responseFields(getJobExecutionFieldDescriptors())
            .and(PayloadDocumentation.fieldWithPath("_links").attributes(Attributes.key(CONSTRAINTS).value(""))
                    .description("<<_hateoas,Links>> to other resources.").ignored());
}

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

private static Attributes.Attribute getConstraintsForField(final ConstraintDescriptions constraints,
        final String fieldName) {
    return Attributes.key(CONSTRAINTS).value(
            StringUtils.collectionToDelimitedString(constraints.descriptionsForProperty(fieldName), ". "));
}

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

/**
 * Make sure can add the commands for a cluster.
 *
 * @throws Exception on configuration error
 *//*from   ww w  . j  a  v  a2 s  .c  o m*/
@Test
public void canAddCommandsForACluster() 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, 1000L)
                    .withId(commandId1).build(),
            null);
    this.createConfigResource(
            new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.ACTIVE, placeholder, 2000L)
                    .withId(commandId2).build(),
            null);

    final RestDocumentationResultHandler addResultHandler = 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 append to the existing list of commands")
                    .attributes(Snippets.EMPTY_CONSTRAINTS)) // Request payload
    );

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

    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)));

    //Shouldn't add anything
    this.mvc.perform(MockMvcRequestBuilders.post(clusterCommandsAPI, ID).contentType(MediaType.APPLICATION_JSON)
            .content(this.objectMapper.writeValueAsBytes(Lists.newArrayList())))
            .andExpect(MockMvcResultMatchers.status().isPreconditionFailed());

    final String commandId3 = UUID.randomUUID().toString();
    this.createConfigResource(new Command.Builder(placeholder, placeholder, placeholder, CommandStatus.INACTIVE,
            placeholder, 1000L).withId(commandId3).build(), null);
    this.mvc.perform(MockMvcRequestBuilders.post(clusterCommandsAPI, ID).contentType(MediaType.APPLICATION_JSON)
            .content(this.objectMapper.writeValueAsBytes(Lists.newArrayList(commandId3))))
            .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.hasSize(3)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[0].id", Matchers.is(commandId1)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[1].id", Matchers.is(commandId2)))
            .andExpect(MockMvcResultMatchers.jsonPath("$[2].id", Matchers.is(commandId3)));

    // Test the 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 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(clusterCommandsAPI, ID).param("status",
            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(commandId3)))
            .andDo(getResultHandler);
}

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
 *///  w  w  w .  j a va  2 s .c  o  m
@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.CommandRestControllerIntegrationTests.java

/**
 * Make sure can get all the clusters which use a given command.
 *
 * @throws Exception on configuration error
 *///from   w  ww .j  a v a  2s  .co 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);
}