def json_error(status_code=400, status_message='error', **kw):
    errors = Errors(status=status_code)
    kw.setdefault('location', 'body')
    kw.setdefault('name', '')
    kw.setdefault('description', '')
    errors.add(**kw)
    return _JSONError(errors, status_code, status_message)
Пример #2
0
    def test_error_handler(self):
        errors = Errors(403)
        errors.add('body', 'data',
                   "Can't update resource in current (draft) status")

        request = mock.MagicMock()
        request.matchdict = {'a': 'b'}
        request.errors = errors
        response = error_handler(request)

        self.assertEqual(
            response.body,
            '{"status": "error", "errors": [{"location": "body", "name": "data", "description": "Can\'t update resource in current (draft) status"}]}'
        )
        self.assertEqual(response.content_type, 'application/json')
        self.assertEqual(response.status, '403 Forbidden')
Пример #3
0
    def _validate_request(self, request, data):
        """Raise a cornice compatible error when the application is not
        one of the defined ones"""
        if self.applications == {}:
            return

        application = request.matchdict.get('application')
        version = request.matchdict.get('version')
        errors = Errors()

        if application not in self.applications:
            errors.add("uri", "application",
            "the application %r is not defined, please use one of %s" % (
                        application, ", ".join(self.applications.keys())))

        if version not in self.applications[application]:
            versions = self.applications[application]
            errors.add("uri", "version",
              ("the application %r is not defined for this version, please "
               "use one of %s") % (application, ", ".join(versions)))

        if len(errors) > 0:
            raise json_error(errors, 404)
Пример #4
0
class TestErrorsHelper(TestCase):
    def setUp(self):
        self.errors = Errors()

    def test_add_to_supported_location(self):
        self.errors.add('')
        self.errors.add('body', description='!')
        self.errors.add('querystring', name='field')
        self.errors.add('url')
        self.errors.add('header')
        self.errors.add('path')
        self.errors.add('cookies')
        self.errors.add('method')
        self.assertEqual(len(self.errors), 8)

    def test_raises_an_exception_when_location_is_unsupported(self):
        with self.assertRaises(ValueError):
            self.errors.add('something')
Пример #5
0
class TestErrorsHelper(TestCase):
    def setUp(self):
        self.errors = Errors()

    def test_add_to_supported_location(self):
        self.errors.add('')
        self.errors.add('body', description='!')
        self.errors.add('querystring', name='field')
        self.errors.add('url')
        self.errors.add('header')
        self.errors.add('path')
        self.errors.add('cookies')
        self.errors.add('method')
        self.assertEqual(len(self.errors), 8)

    def test_raises_an_exception_when_location_is_unsupported(self):
        with self.assertRaises(ValueError):
            self.errors.add('something')
Пример #6
0
def json_error(status=400, location='body', name='', description='', **kw):
    errors = Errors(status=status)
    errors.add(location=location, name=name, description=description, **kw)
    return cornice_error(errors)