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