summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorDan Prince <dan.prince@rackspace.com>2011-05-12 10:55:04 -0400
committerDan Prince <dan.prince@rackspace.com>2011-05-12 10:55:04 -0400
commit22c33d80ce040f09c9bcd7584cf1165cf769e192 (patch)
treea4df237208211a70b021a95768ea05bd97fa57e9 /nova/tests
parent5f2bfe56cf12d8f45ae24a5c9dd0c99e6c4d0310 (diff)
Initial work on request extensions.
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/api/openstack/extensions/foxinsocks.py3
-rw-r--r--nova/tests/api/openstack/test_extensions.py47
2 files changed, 49 insertions, 1 deletions
diff --git a/nova/tests/api/openstack/extensions/foxinsocks.py b/nova/tests/api/openstack/extensions/foxinsocks.py
index 0860b51ac..7699ffb56 100644
--- a/nova/tests/api/openstack/extensions/foxinsocks.py
+++ b/nova/tests/api/openstack/extensions/foxinsocks.py
@@ -89,6 +89,9 @@ class Foxinsocks(object):
response_exts.append(resp_ext2)
return response_exts
+ def get_request_extensions(self):
+ return []
+
def _add_tweedle(self, input_dict, req, id):
return "Tweedle Beetle Added."
diff --git a/nova/tests/api/openstack/test_extensions.py b/nova/tests/api/openstack/test_extensions.py
index 481d34ed1..7fadb5b69 100644
--- a/nova/tests/api/openstack/test_extensions.py
+++ b/nova/tests/api/openstack/test_extensions.py
@@ -45,10 +45,12 @@ class StubController(nova.wsgi.Controller):
class StubExtensionManager(object):
- def __init__(self, resource_ext=None, action_ext=None, response_ext=None):
+ def __init__(self, resource_ext=None, action_ext=None, response_ext=None,
+ request_ext=None):
self.resource_ext = resource_ext
self.action_ext = action_ext
self.response_ext = response_ext
+ self.request_ext = request_ext
def get_name(self):
return "Tweedle Beetle Extension"
@@ -77,6 +79,12 @@ class StubExtensionManager(object):
response_exts.append(self.response_ext)
return response_exts
+ def get_request_extensions(self):
+ request_extensions = []
+ if self.request_ext:
+ request_extensions.append(self.request_ext)
+ return request_extensions
+
class ExtensionControllerTest(unittest.TestCase):
@@ -234,3 +242,40 @@ class ResponseExtensionTest(unittest.TestCase):
response_data = json.loads(response.body)
self.assertEqual(test_resp, response_data['flavor']['googoose'])
self.assertEqual("Pig Bands!", response_data['big_bands'])
+
+
+class RequestExtensionTest(unittest.TestCase):
+
+ def setUp(self):
+ super(RequestExtensionTest, self).setUp()
+ self.stubs = stubout.StubOutForTesting()
+ fakes.FakeAuthManager.reset_fake_data()
+ fakes.FakeAuthDatabase.data = {}
+ fakes.stub_out_auth(self.stubs)
+ self.context = context.get_admin_context()
+
+ def tearDown(self):
+ self.stubs.UnsetAll()
+ super(RequestExtensionTest, self).tearDown()
+
+ def test_post_request_extension_with_stub_mgr(self):
+
+ def _req_handler(req, res):
+ # only handle JSON responses
+ data = json.loads(res.body)
+ data['flavor']['googoose'] = req.GET.get('test_param')
+ return data
+
+ resp_ext = extensions.RequestExtension('GET',
+ '/v1.1/flavors/:(id)',
+ _req_handler)
+
+ manager = StubExtensionManager(None, None, None, resp_ext)
+ app = fakes.wsgi_app()
+ ext_midware = extensions.ExtensionMiddleware(app, manager)
+ request = webob.Request.blank("/v1.1/flavors/1?test_param=foo")
+ request.environ['api.version'] = '1.1'
+ response = request.get_response(ext_midware)
+ self.assertEqual(200, response.status_int)
+ response_data = json.loads(response.body)
+ self.assertEqual('foo', response_data['flavor']['googoose'])