Java源码示例:com.nike.backstopper.apierror.sample.SampleCoreApiError
示例1
@Test
public void verify_NOT_FOUND_returned_if_unknown_path_is_requested() {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(UUID.randomUUID().toString())
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NOT_FOUND);
}
示例2
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_GENERIC_SERVICE_ERROR_is_thrown_when_correct_endpoint_is_hit(ServerScenario scenario) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH + TRIGGER_UNHANDLED_ERROR_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.GENERIC_SERVICE_ERROR);
}
示例3
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_NOT_FOUND_returned_if_unknown_path_is_requested(ServerScenario scenario) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(UUID.randomUUID().toString())
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NOT_FOUND);
}
示例4
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_METHOD_NOT_ALLOWED_returned_if_known_path_is_requested_with_invalid_http_method(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.log().all()
.when()
.delete()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.METHOD_NOT_ALLOWED);
}
示例5
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_sample_get_fails_with_NO_ACCEPTABLE_REPRESENTATION_if_passed_invalid_accept_header(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.accept(ContentType.BINARY)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NO_ACCEPTABLE_REPRESENTATION);
}
示例6
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_sample_post_fails_with_UNSUPPORTED_MEDIA_TYPE_if_passed_invalid_content_type(
ServerScenario scenario
) throws IOException {
SampleModel requestPayload = randomizedSampleModel();
String requestPayloadAsString = objectMapper.writeValueAsString(requestPayload);
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.body(requestPayloadAsString)
.contentType(ContentType.TEXT)
.log().all()
.when()
.post()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.UNSUPPORTED_MEDIA_TYPE);
}
示例7
@Test
public void verify_sample_get_fails_with_NO_ACCEPTABLE_REPRESENTATION_if_passed_invalid_accept_header() throws InterruptedException, IOException {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(SAMPLE_PATH)
.accept(ContentType.BINARY)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NO_ACCEPTABLE_REPRESENTATION);
}
示例8
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_TYPE_CONVERSION_ERROR_is_thrown_when_framework_cannot_convert_type(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH + WITH_REQUIRED_QUERY_PARAM_SUBPATH)
.queryParam("requiredQueryParamValue", "not-an-integer")
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, new ApiErrorWithMetadata(
SampleCoreApiError.TYPE_CONVERSION_ERROR,
MapBuilder.builder("bad_property_name", (Object)"requiredQueryParamValue")
.put("bad_property_value", "not-an-integer")
.put("required_type", "int")
.build()
));
}
示例9
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_sample_post_fails_with_MISSING_EXPECTED_CONTENT_if_passed_empty_body(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.contentType(ContentType.JSON)
.body("")
.log().all()
.when()
.post()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.MISSING_EXPECTED_CONTENT);
}
示例10
@Test
public void verify_sample_post_fails_with_MISSING_EXPECTED_CONTENT_if_passed_empty_body() throws InterruptedException, IOException {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(SAMPLE_PATH)
.contentType(ContentType.JSON)
.body("")
.log().all()
.when()
.post()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.MISSING_EXPECTED_CONTENT);
}
示例11
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_GENERIC_SERVICE_ERROR_is_thrown_when_correct_endpoint_is_hit(ServerScenario scenario) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH + TRIGGER_UNHANDLED_ERROR_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.GENERIC_SERVICE_ERROR);
}
示例12
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_NOT_FOUND_returned_if_unknown_path_is_requested(ServerScenario scenario) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(UUID.randomUUID().toString())
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NOT_FOUND);
}
示例13
@Test
public void verify_NOT_FOUND_returned_if_unknown_path_is_requested() {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(UUID.randomUUID().toString())
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NOT_FOUND);
}
示例14
@Test
public void verify_GENERIC_SERVICE_ERROR_is_thrown_when_correct_endpoint_is_hit() {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(SAMPLE_PATH + TRIGGER_UNHANDLED_ERROR_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.GENERIC_SERVICE_ERROR);
}
示例15
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_MALFORMED_REQUEST_is_thrown_when_required_data_is_missing(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH + WITH_REQUIRED_QUERY_PARAM_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(
response,
new ApiErrorWithMetadata(
SampleCoreApiError.MALFORMED_REQUEST,
Pair.of("missing_param_type", "int"),
Pair.of("missing_param_name", "requiredQueryParamValue")
)
);
}
示例16
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_sample_post_fails_with_MISSING_EXPECTED_CONTENT_if_passed_empty_body(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.contentType(ContentType.JSON)
.body("")
.log().all()
.when()
.post()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.MISSING_EXPECTED_CONTENT);
}
示例17
@Test
public void verify_sample_post_fails_with_MALFORMED_REQUEST_if_passed_bad_json_body() throws InterruptedException, IOException {
SampleModel originalValidPayloadObj = randomizedSampleModel();
String originalValidPayloadAsString = objectMapper.writeValueAsString(originalValidPayloadObj);
@SuppressWarnings("unchecked")
Map<String, Object> badRequestPayloadAsMap = objectMapper.readValue(originalValidPayloadAsString, Map.class);
badRequestPayloadAsMap.put("throw_manual_error", "not-a-boolean");
String badJsonPayloadAsString = objectMapper.writeValueAsString(badRequestPayloadAsMap);
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(SAMPLE_PATH)
.contentType(ContentType.JSON)
.body(badJsonPayloadAsString)
.log().all()
.when()
.post()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.MALFORMED_REQUEST);
}
示例18
@Test
public void verify_sample_post_fails_with_UNSUPPORTED_MEDIA_TYPE_if_passed_invalid_content_type() throws IOException {
SampleModel requestPayload = randomizedSampleModel();
String requestPayloadAsString = objectMapper.writeValueAsString(requestPayload);
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(SAMPLE_PATH)
.body(requestPayloadAsString)
.contentType(ContentType.TEXT)
.log().all()
.when()
.post()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.UNSUPPORTED_MEDIA_TYPE);
}
示例19
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_METHOD_NOT_ALLOWED_returned_if_known_path_is_requested_with_invalid_http_method(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.log().all()
.when()
.delete()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.METHOD_NOT_ALLOWED);
}
示例20
@Test
public void verify_GENERIC_SERVICE_ERROR_is_thrown_when_correct_endpoint_is_hit() throws InterruptedException, IOException {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(SAMPLE_PATH + TRIGGER_UNHANDLED_ERROR_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.GENERIC_SERVICE_ERROR);
}
示例21
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_sample_post_fails_with_UNSUPPORTED_MEDIA_TYPE_if_passed_invalid_content_type(
ServerScenario scenario
) throws IOException {
SampleModel requestPayload = randomizedSampleModel();
String requestPayloadAsString = objectMapper.writeValueAsString(requestPayload);
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.body(requestPayloadAsString)
.contentType(ContentType.TEXT)
.log().all()
.when()
.post()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.UNSUPPORTED_MEDIA_TYPE);
}
示例22
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_MALFORMED_REQUEST_is_thrown_when_required_data_is_missing(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH + WITH_REQUIRED_QUERY_PARAM_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(
response,
new ApiErrorWithMetadata(
SampleCoreApiError.MALFORMED_REQUEST,
Pair.of("missing_param_type", "int"),
Pair.of("missing_param_name", "requiredQueryParamValue")
)
);
}
示例23
@Test
public void invalid_http_call_with_invalid_URL_escaping_should_result_in_expected_400_error() throws Exception {
// given
// Incorrectly escaped URLs cause a blowup in RequestInfoImpl when it tries to decode the URL. We can trigger
// this by putting a % character that is not followed by a proper escape sequence.
NettyHttpClientRequestBuilder request = request()
.withMethod(HttpMethod.GET)
.withUri("%notAnEscapeSequence");
// when
NettyHttpClientResponse response = request.execute(downstreamServerConfig.endpointsPort(), 3000);
// then
verifyErrorReceived(response.payload,
response.statusCode,
new ApiErrorWithMetadata(SampleCoreApiError.MALFORMED_REQUEST,
Pair.of("cause", "Invalid HTTP request"))
);
}
示例24
@Test
public void example_endpoint_post_call_should_return_MISSING_EXPECTED_CONTENT_when_payload_is_missing() {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(serverConfig.endpointsPort())
.log().all()
.when()
.basePath(ExampleEndpoint.MATCHING_PATH)
.post()
.then()
.log().all()
.extract();
verifyExpectedError(response, SampleCoreApiError.MISSING_EXPECTED_CONTENT);
}
示例25
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_GENERIC_SERVICE_ERROR_is_thrown_when_correct_endpoint_is_hit(ServerScenario scenario) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH + TRIGGER_UNHANDLED_ERROR_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.GENERIC_SERVICE_ERROR);
}
示例26
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_NOT_FOUND_returned_if_unknown_path_is_requested(ServerScenario scenario) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(UUID.randomUUID().toString())
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NOT_FOUND);
}
示例27
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_METHOD_NOT_ALLOWED_returned_if_known_path_is_requested_with_invalid_http_method(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.log().all()
.when()
.delete()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.METHOD_NOT_ALLOWED);
}
示例28
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_sample_get_fails_with_NO_ACCEPTABLE_REPRESENTATION_if_passed_invalid_accept_header(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH)
.accept(ContentType.BINARY)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NO_ACCEPTABLE_REPRESENTATION);
}
示例29
@Test
public void verify_NOT_FOUND_returned_if_unknown_path_is_requested() {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(SERVER_PORT)
.basePath(UUID.randomUUID().toString())
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(response, SampleCoreApiError.NOT_FOUND);
}
示例30
@UseDataProvider("serverScenarioDataProvider")
@Test
public void verify_MALFORMED_REQUEST_is_thrown_when_required_data_is_missing(
ServerScenario scenario
) {
ExtractableResponse response =
given()
.baseUri("http://localhost")
.port(scenario.serverPort)
.basePath(SAMPLE_PATH + WITH_REQUIRED_QUERY_PARAM_SUBPATH)
.log().all()
.when()
.get()
.then()
.log().all()
.extract();
verifyErrorReceived(
response,
new ApiErrorWithMetadata(
SampleCoreApiError.MALFORMED_REQUEST,
Pair.of("missing_param_type", "int"),
Pair.of("missing_param_name", "requiredQueryParamValue")
)
);
}