Merge "Add entity body validation helper"
This commit is contained in:
@@ -1016,6 +1016,23 @@ class Controller(object):
|
||||
else:
|
||||
self._view_builder = None
|
||||
|
||||
@staticmethod
|
||||
def is_valid_body(body, entity_name):
|
||||
if not (body and entity_name in body):
|
||||
return False
|
||||
|
||||
def is_dict(d):
|
||||
try:
|
||||
d.get(None)
|
||||
return True
|
||||
except AttributeError:
|
||||
return False
|
||||
|
||||
if not is_dict(body[entity_name]):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
class Fault(webob.exc.HTTPException):
|
||||
"""Wrap webob.exc.HTTPException to provide API friendly response."""
|
||||
|
||||
@@ -828,3 +828,32 @@ class ResponseObjectTest(test.TestCase):
|
||||
self.assertEqual(response.headers['X-header2'], 'header2')
|
||||
self.assertEqual(response.status_int, 202)
|
||||
self.assertEqual(response.body, mtype)
|
||||
|
||||
|
||||
class ValidBodyTest(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(ValidBodyTest, self).setUp()
|
||||
self.controller = wsgi.Controller()
|
||||
|
||||
def test_is_valid_body(self):
|
||||
body = {'foo': {}}
|
||||
self.assertTrue(self.controller.is_valid_body(body, 'foo'))
|
||||
|
||||
def test_is_valid_body_none(self):
|
||||
resource = wsgi.Resource(controller=None)
|
||||
self.assertFalse(self.controller.is_valid_body(None, 'foo'))
|
||||
|
||||
def test_is_valid_body_empty(self):
|
||||
resource = wsgi.Resource(controller=None)
|
||||
self.assertFalse(self.controller.is_valid_body({}, 'foo'))
|
||||
|
||||
def test_is_valid_body_no_entity(self):
|
||||
resource = wsgi.Resource(controller=None)
|
||||
body = {'bar': {}}
|
||||
self.assertFalse(self.controller.is_valid_body(body, 'foo'))
|
||||
|
||||
def test_is_valid_body_malformed_entity(self):
|
||||
resource = wsgi.Resource(controller=None)
|
||||
body = {'foo': 'bar'}
|
||||
self.assertFalse(self.controller.is_valid_body(body, 'foo'))
|
||||
|
||||
Reference in New Issue
Block a user