void canCreateCommandWithoutId()

in genie-web/src/integTest/java/com/netflix/genie/web/apis/rest/v3/controllers/CommandRestControllerIntegrationTest.java [124:245]


    void canCreateCommandWithoutId() throws Exception {
        final RestDocumentationFilter createFilter = RestAssuredRestDocumentation.document(
            "{class-name}/{method-name}/{step}/",
            Snippets.CONTENT_TYPE_HEADER, // Request headers
            Snippets.getCommandRequestPayload(), // Request fields
            Snippets.LOCATION_HEADER // Response headers
        );

        final String id = this.createConfigResource(
            new Command.Builder(NAME, USER, VERSION, CommandStatus.ACTIVE, EXECUTABLE_AND_ARGS)
                .withDescription(DESCRIPTION)
                .withMemory(MEMORY)
                .withConfigs(CONFIGS)
                .withDependencies(DEPENDENCIES)
                .withTags(TAGS)
                .withClusterCriteria(CLUSTER_CRITERIA)
                .build(),
            createFilter
        );

        final RestDocumentationFilter getFilter = RestAssuredRestDocumentation.document(
            "{class-name}/{method-name}/{step}/",
            Snippets.ID_PATH_PARAM, // path parameters
            Snippets.HAL_CONTENT_TYPE_HEADER, // response headers
            Snippets.getCommandResponsePayload(), // response payload
            Snippets.COMMAND_LINKS // response links
        );

        RestAssured
            .given(this.getRequestSpecification())
            .filter(getFilter)
            .when()
            .port(this.port)
            .get(COMMANDS_API + "/{id}", id)
            .then()
            .statusCode(Matchers.is(HttpStatus.OK.value()))
            .contentType(Matchers.containsString(MediaTypes.HAL_JSON_VALUE))
            .body(ID_PATH, Matchers.is(id))
            .body(CREATED_PATH, Matchers.notNullValue())
            .body(UPDATED_PATH, Matchers.notNullValue())
            .body(NAME_PATH, Matchers.is(NAME))
            .body(USER_PATH, Matchers.is(USER))
            .body(VERSION_PATH, Matchers.is(VERSION))
            .body(STATUS_PATH, Matchers.is(CommandStatus.ACTIVE.toString()))
            .body(EXECUTABLE_PATH, Matchers.is(EXECUTABLE))
            .body(CHECK_DELAY_PATH, Matchers.is((int) Command.DEFAULT_CHECK_DELAY))
            .body(DESCRIPTION_PATH, Matchers.is(DESCRIPTION))
            .body(MEMORY_PATH, Matchers.is(MEMORY))
            .body(CONFIGS_PATH, Matchers.hasSize(2))
            .body(CONFIGS_PATH, Matchers.hasItems(CONFIG_1, CONFIG_2))
            .body(DEPENDENCIES_PATH, Matchers.hasSize(2))
            .body(DEPENDENCIES_PATH, Matchers.hasItems(DEP_1, DEP_2))
            .body(TAGS_PATH, Matchers.hasSize(4))
            .body(TAGS_PATH, Matchers.hasItem("genie.id:" + id))
            .body(TAGS_PATH, Matchers.hasItem("genie.name:" + NAME))
            .body(TAGS_PATH, Matchers.hasItems(TAG_1, TAG_2))
            .body(CLUSTER_CRITERIA_PATH, Matchers.hasSize(CLUSTER_CRITERIA.size()))
            .body(
                CLUSTER_CRITERIA_PATH + "[0].id",
                Matchers.is(CLUSTER_CRITERIA.get(0).getId().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[0].name",
                Matchers.is(CLUSTER_CRITERIA.get(0).getName().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[0].version",
                Matchers.is(CLUSTER_CRITERIA.get(0).getVersion().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[0].status",
                Matchers.is(CLUSTER_CRITERIA.get(0).getStatus().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[0].tags",
                Matchers.containsInAnyOrder(CLUSTER_CRITERIA.get(0).getTags().toArray(new String[0]))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[1].id",
                Matchers.is(CLUSTER_CRITERIA.get(1).getId().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[1].name",
                Matchers.is(CLUSTER_CRITERIA.get(1).getName().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[1].version",
                Matchers.is(CLUSTER_CRITERIA.get(1).getVersion().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[1].status",
                Matchers.is(CLUSTER_CRITERIA.get(1).getStatus().orElse(null))
            )
            .body(
                CLUSTER_CRITERIA_PATH + "[1].tags",
                Matchers.containsInAnyOrder(CLUSTER_CRITERIA.get(1).getTags().toArray(new String[0]))
            )
            .body(LINKS_PATH + ".keySet().size()", Matchers.is(3))
            .body(LINKS_PATH, Matchers.hasKey(SELF_LINK_KEY))
            .body(LINKS_PATH, Matchers.hasKey(CLUSTERS_LINK_KEY))
            .body(LINKS_PATH, Matchers.hasKey(APPLICATIONS_LINK_KEY))
            .body(
                COMMAND_CLUSTERS_LINK_PATH,
                EntityLinkMatcher.matchUri(
                    COMMANDS_API,
                    CLUSTERS_LINK_KEY,
                    CLUSTERS_OPTIONAL_HAL_LINK_PARAMETERS,
                    id
                )
            )
            .body(
                COMMAND_APPS_LINK_PATH,
                EntityLinkMatcher.matchUri(
                    COMMANDS_API,
                    APPLICATIONS_LINK_KEY,
                    null,
                    id
                )
            );

        Assertions.assertThat(this.commandRepository.count()).isEqualTo(1L);
    }