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