diff --git a/CHANGES.txt b/CHANGES.txt index 8a3f1217..c9612683 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,6 +9,8 @@ CHANGELOG Breaking changes - Get rid of Buildout files (#369) +- ``request.errors.add()`` now only accepts one of ``header``, ``body``, ``url``, + ``querystring`` as first argument (fixes #99) 1.2.1 (2016-03-15) diff --git a/cornice/errors.py b/cornice/errors.py index 60d254d7..ed3534d0 100644 --- a/cornice/errors.py +++ b/cornice/errors.py @@ -17,6 +17,10 @@ def __init__(self, request=None, status=400): def add(self, location, name=None, description=None, **kw): """Registers a new error.""" + allowed = ('body', 'querystring', 'url', 'header') + if location not in allowed: + raise ValueError('%r not in %s' % (location, allowed)) + self.append(dict( location=location, name=name, diff --git a/cornice/tests/test_errors.py b/cornice/tests/test_errors.py new file mode 100644 index 00000000..b39f9b48 --- /dev/null +++ b/cornice/tests/test_errors.py @@ -0,0 +1,12 @@ +from cornice.tests.support import TestCase + +from cornice.errors import Errors + + +class TestErrorsHelper(TestCase): + def setUp(self): + self.errors = Errors() + + def test_raises_an_exception_when_location_is_unsupported(self): + with self.assertRaises(ValueError): + self.errors.add('something') diff --git a/docs/source/validation.rst b/docs/source/validation.rst index de096d7b..7bfde625 100644 --- a/docs/source/validation.rst +++ b/docs/source/validation.rst @@ -299,7 +299,7 @@ This means something like this:: def validate_it(request): # pseudo-code validation logic if whatever is wrong: - request.errors.add('something') + request.errors.add('body', description="Something is wrong") @service.get(klass=MyClass, validators=('validate_it',)) def view(request):