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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)