def test_bad_schema_validated_on_tween_creation_by_default(): settings = { 'pyramid_swagger.schema_directory': 'tests/sample_schemas/bad_app/', } registry = get_registry(settings=settings) with pytest.raises(jsonschema.exceptions.ValidationError): validation_tween_factory(mock.ANY, registry)
def test_bad_schema_not_validated_if_spec_validation_is_disabled(): settings = { 'pyramid_swagger.schema_directory': 'tests/sample_schemas/bad_app/', 'pyramid_swagger.enable_swagger_spec_validation': False, } registry = get_registry(settings=settings) validation_tween_factory(mock.ANY, registry)
def _validate_against_tween(request, response=None, **overrides): """ Acceptance testing helper for testing the validation tween with Swagger 1.2 responses. :param request: pytest fixture :param response: standard fixture by default """ def handler(request): return response or Response() settings = dict( { 'pyramid_swagger.swagger_versions': ['1.2'], 'pyramid_swagger.enable_swagger_spec_validation': False, 'pyramid_swagger.schema_directory': 'tests/sample_schemas/good_app/' }, **overrides) settings['pyramid_swagger.schema12'] = get_swagger_schema() settings['pyramid_swagger.schema20'] = None registry = get_registry(settings) # Let's make request validation a no-op so we can focus our tests. with mock.patch.object(pyramid_swagger.tween, 'validate_request'): validation_tween_factory(handler, registry)(request)
def _validate_against_tween(request, response=None, settings=None): """ Acceptance testing helper for testing the validation tween. :param request: pytest fixture :param response: standard fixture by default """ def handler(request): return response or Response() settings = settings or dict({ 'pyramid_swagger.schema_path': 'tests/sample_swagger_spec.json', 'pyramid_swagger.enable_response_validation': False, 'pyramid_swagger.enable_swagger_spec_validation': False, }) registry = get_registry(settings=settings) validation_tween_factory(handler, registry)(request)
def _validate_against_tween(request, response=None, settings=None): """ Acceptance testing helper for testing the validation tween. :param request: pytest fixture :param response: standard fixture by default """ def handler(request): return response or Response() settings = settings or dict({ 'pyramid_swagger.schema_directory': 'tests/sample_schemas/good_app/', 'pyramid_swagger.enable_swagger_spec_validation': False, }) registry = get_registry(settings=settings) # Let's make request validation a no-op so we can focus our tests. with mock.patch.object(pyramid_swagger.tween, '_validate_request'): validation_tween_factory(handler, registry)(request)
def _validate_against_tween(request, response=None, path_pattern='/', **overrides): """ Acceptance testing helper for testing the swagger tween with Swagger 2.0 responses. :param request: pyramid request :param response: standard fixture by default :param path_pattern: Path pattern eg. /foo/{bar} :param overrides: dict of overrides for `pyramid_swagger` config """ def handler(request): return response or Response() settings = dict( { 'pyramid_swagger.schema_directory': 'tests/sample_schemas/good_app/', 'pyramid_swagger.enable_swagger_spec_validation': False, 'pyramid_swagger.enable_response_validation': True, 'pyramid_swagger.swagger_versions': ['2.0'] }, **overrides) spec = get_swagger_spec(settings) settings['pyramid_swagger.schema12'] = None settings['pyramid_swagger.schema20'] = spec registry = get_registry(settings) # This is a little messy because the current flow of execution doesn't # set up the route_info in pyramid. Have to mock out the `route_info` # so that usages in the tween meet expectations. Holler if you know a # better way to do this! op = spec.get_op_for_request(request.method, path_pattern) mock_route_info = {'match': request.matchdict, 'route': None} mock_route_mapper = Mock(spec=IRoutesMapper, return_value=mock_route_info) with patch('pyramid_swagger.tween.get_op_for_request', return_value=op): with patch('pyramid.registry.Registry.queryUtility', return_value=mock_route_mapper): validation_tween_factory(handler, registry)(request)
def _validate_against_tween(request, response=None, settings=None): """ Acceptance testing helper for testing the validation tween. :param request: pytest fixture :param response: standard fixture by default """ def handler(request): return response or Response() settings = settings or dict({ 'pyramid_swagger.schema_directory': 'tests/sample_schemas/good_app/', 'pyramid_swagger.enable_swagger_spec_validation': False, }) registry = get_registry(settings=settings) # Let's make request validation a no-op so we can focus our tests. with mock.patch.object(pyramid_swagger.tween, '_validate_request'): validation_tween_factory(handler, registry)(request)
def _validate_against_tween(request, response=None, path_pattern='/', **overrides): """ Acceptance testing helper for testing the swagger tween with Swagger 2.0 responses. :param request: pyramid request :param response: standard fixture by default :param path_pattern: Path pattern eg. /foo/{bar} :param overrides: dict of overrides for `pyramid_swagger` config """ def handler(request): return response or Response() settings = dict({ 'pyramid_swagger.schema_directory': 'tests/sample_schemas/good_app/', 'pyramid_swagger.enable_swagger_spec_validation': False, 'pyramid_swagger.enable_response_validation': True, 'pyramid_swagger.swagger_versions': ['2.0']}, **overrides ) spec = get_swagger_spec(settings) settings['pyramid_swagger.schema12'] = None settings['pyramid_swagger.schema20'] = spec registry = get_registry(settings) # This is a little messy because the current flow of execution doesn't # set up the route_info in pyramid. Have to mock out the `route_info` # so that usages in the tween meet expectations. Holler if you know a # better way to do this! op = spec.get_op_for_request(request.method, path_pattern) mock_route_info = {'match': request.matchdict, 'route': None} mock_route_mapper = Mock(spec=IRoutesMapper, return_value=mock_route_info) with patch('pyramid_swagger.tween.get_op_for_request', return_value=op): with patch('pyramid.registry.Registry.queryUtility', return_value=mock_route_mapper): validation_tween_factory(handler, registry)(request)
def _validate_against_tween(request, response=None, **overrides): """ Acceptance testing helper for testing the validation tween with Swagger 1.2 responses. :param request: pytest fixture :param response: standard fixture by default """ def handler(request): return response or Response() settings = dict({ 'pyramid_swagger.swagger_versions': ['1.2'], 'pyramid_swagger.enable_swagger_spec_validation': False, 'pyramid_swagger.schema_directory': 'tests/sample_schemas/good_app/'}, **overrides ) settings['pyramid_swagger.schema12'] = get_swagger_schema() settings['pyramid_swagger.schema20'] = None registry = get_registry(settings) # Let's make request validation a no-op so we can focus our tests. with mock.patch.object(pyramid_swagger.tween, 'validate_request'): validation_tween_factory(handler, registry)(request)