private String submitJob()

in genie-web/src/integTest/java/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTest.java [314:393]


    private String submitJob(
        final int documentationId,
        final JobRequest jobRequest,
        @Nullable final List<MockMultipartFile> attachments
    ) throws Exception {
        if (attachments != null) {
            final RestDocumentationFilter createResultFilter = RestAssuredRestDocumentation.document(
                "{class-name}/" + documentationId + "/submitJobWithAttachments/",
                HeaderDocumentation.requestHeaders(
                    HeaderDocumentation
                        .headerWithName(HttpHeaders.CONTENT_TYPE)
                        .description(MediaType.MULTIPART_FORM_DATA_VALUE)
                ), // Request headers
                RequestDocumentation.requestParts(
                    RequestDocumentation
                        .partWithName("request")
                        .description("The job request JSON. Content type must be application/json for part"),
                    RequestDocumentation
                        .partWithName("attachment")
                        .description("An attachment file. There can be multiple. Type should be octet-stream")
                ), // Request parts
                Snippets.LOCATION_HEADER // Response Headers
            );

            final RequestSpecification jobRequestSpecification = RestAssured
                .given(this.getRequestSpecification())
                .filter(createResultFilter)
                .contentType(MediaType.MULTIPART_FORM_DATA_VALUE)
                .multiPart(
                    "request",
                    GenieObjectMapper.getMapper().writeValueAsString(jobRequest),
                    MediaType.APPLICATION_JSON_VALUE
                );

            for (final MockMultipartFile attachment : attachments) {
                jobRequestSpecification.multiPart(
                    "attachment",
                    attachment.getOriginalFilename(),
                    attachment.getBytes(),
                    MediaType.APPLICATION_OCTET_STREAM_VALUE
                );
            }

            return this.getIdFromLocation(
                jobRequestSpecification
                    .when()
                    .port(this.port)
                    .post(JOBS_API)
                    .then()
                    .statusCode(Matchers.is(HttpStatus.ACCEPTED.value()))
                    .header(HttpHeaders.LOCATION, Matchers.notNullValue())
                    .extract()
                    .header(HttpHeaders.LOCATION)
            );
        } else {
            // Use regular POST
            final RestDocumentationFilter createResultFilter = RestAssuredRestDocumentation.document(
                "{class-name}/" + documentationId + "/submitJobWithoutAttachments/",
                Snippets.CONTENT_TYPE_HEADER, // Request headers
                Snippets.getJobRequestRequestPayload(), // Request Fields
                Snippets.LOCATION_HEADER // Response Headers
            );

            return this.getIdFromLocation(
                RestAssured
                    .given(this.getRequestSpecification())
                    .filter(createResultFilter)
                    .contentType(MediaType.APPLICATION_JSON_VALUE)
                    .body(GenieObjectMapper.getMapper().writeValueAsBytes(jobRequest))
                    .when()
                    .port(this.port)
                    .post(JOBS_API)
                    .then()
                    .statusCode(Matchers.is(HttpStatus.ACCEPTED.value()))
                    .header(HttpHeaders.LOCATION, Matchers.notNullValue())
                    .extract()
                    .header(HttpHeaders.LOCATION)
            );
        }
    }