diff options
| author | termie <github@anarkystic.com> | 2011-03-24 20:45:59 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-03-24 20:45:59 +0000 |
| commit | 823df3b0ee7e7eb35e5864bfa235e686819df13e (patch) | |
| tree | 857ec7ac289584f3803c97edec8fd42fabe5095d /nova/tests | |
| parent | a0ea76b26a7725efb2fc4a811dff66b4f8bff6b7 (diff) | |
| parent | c5cbec20d2785d3060d57b55a264fbf936709500 (diff) | |
Additions to the Direct API:
* Add an example of a versioned api
* Add some more docs to direct.py
* Add Limited, an API limiting/versioning wrapper
* Improve the formatting of the stack tool
* Add support for volume and network services to the direct api
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/test_direct.py | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/nova/tests/test_direct.py b/nova/tests/test_direct.py index 80e4d2e1f..588a24b35 100644 --- a/nova/tests/test_direct.py +++ b/nova/tests/test_direct.py @@ -25,12 +25,18 @@ import webob from nova import compute from nova import context from nova import exception +from nova import network from nova import test +from nova import volume from nova import utils from nova.api import direct from nova.tests import test_cloud +class ArbitraryObject(object): + pass + + class FakeService(object): def echo(self, context, data): return {'data': data} @@ -39,6 +45,9 @@ class FakeService(object): return {'user': context.user_id, 'project': context.project_id} + def invalid_return(self, context): + return ArbitraryObject() + class DirectTestCase(test.TestCase): def setUp(self): @@ -84,6 +93,12 @@ class DirectTestCase(test.TestCase): resp_parsed = json.loads(resp.body) self.assertEqual(resp_parsed['data'], 'foo') + def test_invalid(self): + req = webob.Request.blank('/fake/invalid_return') + req.environ['openstack.context'] = self.context + req.method = 'POST' + self.assertRaises(exception.Error, req.get_response, self.router) + def test_proxy(self): proxy = direct.Proxy(self.router) rv = proxy.fake.echo(self.context, data='baz') @@ -93,12 +108,20 @@ class DirectTestCase(test.TestCase): class DirectCloudTestCase(test_cloud.CloudTestCase): def setUp(self): super(DirectCloudTestCase, self).setUp() - compute_handle = compute.API(network_api=self.cloud.network_api, - volume_api=self.cloud.volume_api) + compute_handle = compute.API(image_service=self.cloud.image_service) + volume_handle = volume.API() + network_handle = network.API() direct.register_service('compute', compute_handle) + direct.register_service('volume', volume_handle) + direct.register_service('network', network_handle) + self.router = direct.JsonParamsMiddleware(direct.Router()) proxy = direct.Proxy(self.router) self.cloud.compute_api = proxy.compute + self.cloud.volume_api = proxy.volume + self.cloud.network_api = proxy.network + compute_handle.volume_api = proxy.volume + compute_handle.network_api = proxy.network def tearDown(self): super(DirectCloudTestCase, self).tearDown() |
