def _validate_flask_request(request, swagger_spec_path, operation_id): """ Args: request (flask.Request): Flask request to validate. swagger_spec_path (string): The path to the Swagger specification file. operation_id (string): The name of the operation the request should be validated against. Returns: None Raises: TODO """ validator = SwaggerValidator(swagger_spec_path) validator.validate_request(request, operation_id)
def test_merge_api(): validator = SwaggerValidator(copy.deepcopy(SPECIFICATION)) request = {'method': 'GET', 'path': '/merge/test/'} assert validator.validate_request(request) == [{'code': 'operation_missing', 'path': ['GET', '/merge/test/']}] validator.merge({ "apis": [ { "operations": [ { "method": "GET", "nickname": "merge_test_get", }, ], "path": "/merge/test/" }, ], }) assert validator.validate_request(request) == []
def _validate_flask_response(response, swagger_spec_path, operation_id): """ Validate a Flask Response against a particular Swagger spec operation. Args: response (flask.Response): The Flask response to validate. swagger_spec_path (string): The path to the Swagger specification file. operation_id (string): The name of the operation the response should be validated against. Returns: None Raises: swagger_spec_validator.common.SwaggerValidationError: The Swagger spec did not validate. Note: Ensure you are wrapping response codes in quotes (ex: "200") jsonschema.exceptions.ValidationError: The response did not meet the specification. """ validator = SwaggerValidator(swagger_spec_path) status_code = response.status_code body_text = response.data content_type = response.content_type validator.validate_response(operation_id, status_code, body_text, content_type)
def test_merge_api(): validator = SwaggerValidator(copy.deepcopy(SPECIFICATION)) request = {'method': 'GET', 'path': '/merge/test/'} assert validator.validate_request(request) == [{ 'code': 'operation_missing', 'path': ['GET', '/merge/test/'] }] validator.merge({ "apis": [ { "operations": [ { "method": "GET", "nickname": "merge_test_get", }, ], "path": "/merge/test/" }, ], }) assert validator.validate_request(request) == []
def test_validate_response(response_, errors): validator = SwaggerValidator( SPECIFICATION, ignore_endpoints=[r'/ignore/.*', r'/note/\d+/ignore'], ) assert validator.validate_response(response_) == errors
def test_validate_type_or_model(spec, value, errors): validator = SwaggerValidator(SPECIFICATION) assert format_errors(validator.validate_type_or_model(spec, value)) == errors
def test_validate_missing_model(): doc = {'name': 'Tom', 'age': 30} errors = [{'code': 'model_missing', 'path': ['User']}] validator = SwaggerValidator(SPECIFICATION) assert format_errors(validator.validate_model('User', doc)) == errors
def test_validate_model(doc, errors): validator = SwaggerValidator(SPECIFICATION) assert format_errors(validator.validate_model('Person', doc)) == errors
def test_merge(spec, errors): validator = SwaggerValidator(copy.deepcopy(SPECIFICATION)) assert validator.merge(spec) == errors