Esempio n. 1
0
def after_request(response):
    wrapped_req = FlaskOpenAPIRequest(request)
    wrapped_resp = FlaskOpenAPIResponse(response)
    validation_result = response_validator.validate(wrapped_req, wrapped_resp)
    if validation_result.errors:
        logger.error("Error on response: {}, {}"
                     .format(response.response, validation_result.errors))
        raise err.DeveloperError("; ".join([str(err) for err in validation_result.errors]))
    return response
Esempio n. 2
0
    def test_invalid_server(self, response_factory):
        response = response_factory('Not Found', status_code=404)

        openapi_response = FlaskOpenAPIResponse(response)

        assert openapi_response.response == response
        assert openapi_response.data == response.data
        assert openapi_response.status_code == response._status_code
        assert openapi_response.mimetype == response.mimetype
Esempio n. 3
0
 def test_response_validator_path_pattern(self, flask_spec, request_factory,
                                          response_factory):
     validator = ResponseValidator(flask_spec)
     request = request_factory('GET', '/browse/12/', subdomain='kb')
     openapi_request = FlaskOpenAPIRequest(request)
     response = response_factory('Some item', status_code=200)
     openapi_response = FlaskOpenAPIResponse(response)
     result = validator.validate(openapi_request, openapi_response)
     assert not result.errors
Esempio n. 4
0
def validate_response(flask_request, flask_response):
    with open(file_name, encoding='utf-8') as f:
        yaml_content = yaml.load(f)
        spec = create_spec(yaml_content)

        validator = ResponseValidator(spec)

        openapi_request = FlaskOpenAPIRequest(flask_request)
        openapi_response = FlaskOpenAPIResponse(flask_response)

        try:
            result = validator.validate(openapi_request, openapi_response)
            # or
            # validated_data = validate_data(
            #     spec, flask_request, flask_response, response_wrapper_class=FlaskOpenAPIResponse, request_wrapper_class=FlaskOpenAPIRequest)
        except Exception as ex:
            return str(ex)
Esempio n. 5
0
def test_healthz(client):
    """Test the /healthz endpoint."""

    path = '/v1/healthz'
    rv = client.get(path)

    # Validate request and response against OpenAPI spec
    with app.test_request_context(path):
        with open(app.config['OPENAPI_SPEC']) as stream:
            spec = create_spec(safe_load(stream))

        openapi_response = FlaskOpenAPIResponse(rv)
        openapi_request = FlaskOpenAPIRequest(request)
        validator = ResponseValidator(spec)
        result = validator.validate(openapi_request, openapi_response)
        result.raise_for_errors()

    assert rv.content_type == "text/plain"
    assert rv.status_code == 200
    assert b'OK' in rv.data