diff options
| author | Jenkins <jenkins@review.openstack.org> | 2014-09-06 21:46:40 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2014-09-06 21:46:40 +0000 |
| commit | dc9ce6d6081867137c91cee235bceaf35906bc87 (patch) | |
| tree | 60140a4ef90823f538e9c338dc467580db4d61ce /openstackclient/tests | |
| parent | b7816f399766a6aa29e9f147a9546c26c132751f (diff) | |
| parent | 4bbd03210f82d8f9a89627e08a546ba9841ff7fb (diff) | |
| download | python-openstackclient-dc9ce6d6081867137c91cee235bceaf35906bc87.tar.gz | |
Merge "Change app.restapi to app.client_manager.session"
Diffstat (limited to 'openstackclient/tests')
| -rw-r--r-- | openstackclient/tests/common/test_clientmanager.py | 104 | ||||
| -rw-r--r-- | openstackclient/tests/fakes.py | 17 | ||||
| -rw-r--r-- | openstackclient/tests/object/v1/lib/test_container.py | 72 | ||||
| -rw-r--r-- | openstackclient/tests/object/v1/lib/test_object.py | 103 | ||||
| -rw-r--r-- | openstackclient/tests/object/v1/test_container.py | 16 | ||||
| -rw-r--r-- | openstackclient/tests/object/v1/test_object.py | 18 |
6 files changed, 215 insertions, 115 deletions
diff --git a/openstackclient/tests/common/test_clientmanager.py b/openstackclient/tests/common/test_clientmanager.py index 6aee711d..5a25fa2c 100644 --- a/openstackclient/tests/common/test_clientmanager.py +++ b/openstackclient/tests/common/test_clientmanager.py @@ -14,11 +14,26 @@ # from openstackclient.common import clientmanager +from openstackclient.common import restapi from openstackclient.tests import utils +AUTH_REF = {'a': 1} AUTH_TOKEN = "foobar" AUTH_URL = "http://0.0.0.0" +USERNAME = "itchy" +PASSWORD = "scratchy" +SERVICE_CATALOG = {'sc': '123'} + + +def FakeMakeClient(instance): + return FakeClient() + + +class FakeClient(object): + auth_ref = AUTH_REF + auth_token = AUTH_TOKEN + service_catalog = SERVICE_CATALOG class Container(object): @@ -28,31 +43,96 @@ class Container(object): pass +class TestClientCache(utils.TestCase): + + def test_singleton(self): + # NOTE(dtroyer): Verify that the ClientCache descriptor only invokes + # the factory one time and always returns the same value after that. + c = Container() + self.assertEqual(c.attr, c.attr) + + class TestClientManager(utils.TestCase): def setUp(self): super(TestClientManager, self).setUp() - api_version = {"identity": "2.0"} + clientmanager.ClientManager.identity = \ + clientmanager.ClientCache(FakeMakeClient) - self.client_manager = clientmanager.ClientManager( + def test_client_manager_token(self): + + client_manager = clientmanager.ClientManager( token=AUTH_TOKEN, url=AUTH_URL, + verify=True, + ) + + self.assertEqual( + AUTH_TOKEN, + client_manager._token, + ) + self.assertEqual( + AUTH_URL, + client_manager._url, + ) + self.assertIsInstance( + client_manager.session, + restapi.RESTApi, + ) + self.assertFalse(client_manager._insecure) + self.assertTrue(client_manager._verify) + + def test_client_manager_password(self): + + client_manager = clientmanager.ClientManager( auth_url=AUTH_URL, - api_version=api_version, + username=USERNAME, + password=PASSWORD, + verify=False, ) - def test_singleton(self): - # NOTE(dtroyer): Verify that the ClientCache descriptor only invokes - # the factory one time and always returns the same value after that. - c = Container() - self.assertEqual(c.attr, c.attr) + self.assertEqual( + AUTH_URL, + client_manager._auth_url, + ) + self.assertEqual( + USERNAME, + client_manager._username, + ) + self.assertEqual( + PASSWORD, + client_manager._password, + ) + self.assertIsInstance( + client_manager.session, + restapi.RESTApi, + ) + self.assertTrue(client_manager._insecure) + self.assertFalse(client_manager._verify) - def test_make_client_identity_default(self): + # These need to stick around until the old-style clients are gone + self.assertEqual( + AUTH_REF, + client_manager.auth_ref, + ) self.assertEqual( - self.client_manager.identity.auth_token, AUTH_TOKEN, + client_manager._token, ) self.assertEqual( - self.client_manager.identity.management_url, - AUTH_URL, + SERVICE_CATALOG, + client_manager._service_catalog, ) + + def test_client_manager_password_verify_ca(self): + + client_manager = clientmanager.ClientManager( + auth_url=AUTH_URL, + username=USERNAME, + password=PASSWORD, + verify='cafile', + ) + + self.assertFalse(client_manager._insecure) + self.assertTrue(client_manager._verify) + self.assertEqual('cafile', client_manager._cacert) diff --git a/openstackclient/tests/fakes.py b/openstackclient/tests/fakes.py index fb27ef94..263640ee 100644 --- a/openstackclient/tests/fakes.py +++ b/openstackclient/tests/fakes.py @@ -13,9 +13,12 @@ # under the License. # +import json import six import sys +import requests + AUTH_TOKEN = "foobar" AUTH_URL = "http://0.0.0.0" @@ -42,7 +45,6 @@ class FakeApp(object): self.stdin = sys.stdin self.stdout = _stdout or sys.stdout self.stderr = sys.stderr - self.restapi = None class FakeClientManager(object): @@ -53,6 +55,7 @@ class FakeClientManager(object): self.object = None self.volume = None self.network = None + self.session = None self.auth_ref = None @@ -78,3 +81,15 @@ class FakeResource(object): k != 'manager') info = ", ".join("%s=%s" % (k, getattr(self, k)) for k in reprkeys) return "<%s %s>" % (self.__class__.__name__, info) + + +class FakeResponse(requests.Response): + def __init__(self, headers={}, status_code=200, data=None, encoding=None): + super(FakeResponse, self).__init__() + + self.status_code = status_code + + self.headers.update(headers) + self._content = json.dumps(data) + if not isinstance(self._content, six.binary_type): + self._content = self._content.encode() diff --git a/openstackclient/tests/object/v1/lib/test_container.py b/openstackclient/tests/object/v1/lib/test_container.py index f7355592..ce70b835 100644 --- a/openstackclient/tests/object/v1/lib/test_container.py +++ b/openstackclient/tests/object/v1/lib/test_container.py @@ -18,7 +18,7 @@ import mock from openstackclient.object.v1.lib import container as lib_container -from openstackclient.tests.common import test_restapi as restapi +from openstackclient.tests import fakes from openstackclient.tests.object.v1 import fakes as object_fakes @@ -39,156 +39,158 @@ class TestContainer(object_fakes.TestObjectv1): def setUp(self): super(TestContainer, self).setUp() - self.app.restapi = mock.MagicMock() + self.app.client_manager.session = mock.MagicMock() class TestContainerList(TestContainer): def test_container_list_no_options(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_container.list_containers( - self.app.restapi, + self.app.client_manager.session, fake_url, ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url, params={ 'format': 'json', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_container_list_marker(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_container.list_containers( - self.app.restapi, + self.app.client_manager.session, fake_url, marker='next', ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url, params={ 'format': 'json', 'marker': 'next', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_container_list_limit(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_container.list_containers( - self.app.restapi, + self.app.client_manager.session, fake_url, limit=5, ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url, params={ 'format': 'json', 'limit': 5, } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_container_list_end_marker(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_container.list_containers( - self.app.restapi, + self.app.client_manager.session, fake_url, end_marker='last', ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url, params={ 'format': 'json', 'end_marker': 'last', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_container_list_prefix(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_container.list_containers( - self.app.restapi, + self.app.client_manager.session, fake_url, prefix='foo/', ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url, params={ 'format': 'json', 'prefix': 'foo/', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_container_list_full_listing(self): + sess = self.app.client_manager.session def side_effect(*args, **kwargs): - rv = self.app.restapi.list.return_value - self.app.restapi.list.return_value = [] - self.app.restapi.list.side_effect = None + rv = sess.get().json.return_value + sess.get().json.return_value = [] + sess.get().json.side_effect = None return rv resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp - self.app.restapi.list.side_effect = side_effect + sess.get().json.return_value = resp + sess.get().json.side_effect = side_effect data = lib_container.list_containers( - self.app.restapi, + self.app.client_manager.session, fake_url, full_listing=True, ) # Check expected values - self.app.restapi.list.assert_called_with( + sess.get.assert_called_with( fake_url, params={ 'format': 'json', 'marker': 'is-name', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) class TestContainerShow(TestContainer): def test_container_show_no_options(self): resp = { + 'X-Container-Meta-Owner': fake_account, 'x-container-object-count': 1, 'x-container-bytes-used': 577, } - self.app.restapi.head.return_value = \ - restapi.FakeResponse(headers=resp) + self.app.client_manager.session.head.return_value = \ + fakes.FakeResponse(headers=resp) data = lib_container.show_container( - self.app.restapi, + self.app.client_manager.session, fake_url, 'is-name', ) # Check expected values - self.app.restapi.head.assert_called_with( + self.app.client_manager.session.head.assert_called_with( fake_url + '/is-name', ) @@ -202,4 +204,4 @@ class TestContainerShow(TestContainer): 'sync_to': None, 'sync_key': None, } - self.assertEqual(data, data_expected) + self.assertEqual(data_expected, data) diff --git a/openstackclient/tests/object/v1/lib/test_object.py b/openstackclient/tests/object/v1/lib/test_object.py index 064efb53..f96732b4 100644 --- a/openstackclient/tests/object/v1/lib/test_object.py +++ b/openstackclient/tests/object/v1/lib/test_object.py @@ -18,7 +18,7 @@ import mock from openstackclient.object.v1.lib import object as lib_object -from openstackclient.tests.common import test_restapi as restapi +from openstackclient.tests import fakes from openstackclient.tests.object.v1 import fakes as object_fakes @@ -40,99 +40,99 @@ class TestObject(object_fakes.TestObjectv1): def setUp(self): super(TestObject, self).setUp() - self.app.restapi = mock.MagicMock() + self.app.client_manager.session = mock.MagicMock() class TestObjectListObjects(TestObject): def test_list_objects_no_options(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_object.list_objects( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_list_objects_marker(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_object.list_objects( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, marker='next', ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', 'marker': 'next', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_list_objects_limit(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_object.list_objects( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, limit=5, ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', 'limit': 5, } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_list_objects_end_marker(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_object.list_objects( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, end_marker='last', ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', 'end_marker': 'last', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_list_objects_delimiter(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_object.list_objects( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, delimiter='|', @@ -142,85 +142,86 @@ class TestObjectListObjects(TestObject): # NOTE(dtroyer): requests handles the URL encoding and we're # mocking that so use the otherwise-not-legal # pipe '|' char in the response. - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', 'delimiter': '|', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_list_objects_prefix(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_object.list_objects( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, prefix='foo/', ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', 'prefix': 'foo/', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_list_objects_path(self): resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp + self.app.client_manager.session.get().json.return_value = resp data = lib_object.list_objects( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, path='next', ) # Check expected values - self.app.restapi.list.assert_called_with( + self.app.client_manager.session.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', 'path': 'next', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) def test_list_objects_full_listing(self): + sess = self.app.client_manager.session def side_effect(*args, **kwargs): - rv = self.app.restapi.list.return_value - self.app.restapi.list.return_value = [] - self.app.restapi.list.side_effect = None + rv = sess.get().json.return_value + sess.get().json.return_value = [] + sess.get().json.side_effect = None return rv resp = [{'name': 'is-name'}] - self.app.restapi.list.return_value = resp - self.app.restapi.list.side_effect = side_effect + sess.get().json.return_value = resp + sess.get().json.side_effect = side_effect data = lib_object.list_objects( - self.app.restapi, + sess, fake_url, fake_container, full_listing=True, ) # Check expected values - self.app.restapi.list.assert_called_with( + sess.get.assert_called_with( fake_url + '/' + fake_container, params={ 'format': 'json', 'marker': 'is-name', } ) - self.assertEqual(data, resp) + self.assertEqual(resp, data) class TestObjectShowObjects(TestObject): @@ -228,19 +229,20 @@ class TestObjectShowObjects(TestObject): def test_object_show_no_options(self): resp = { 'content-type': 'text/alpha', + 'x-container-meta-owner': fake_account, } - self.app.restapi.head.return_value = \ - restapi.FakeResponse(headers=resp) + self.app.client_manager.session.head.return_value = \ + fakes.FakeResponse(headers=resp) data = lib_object.show_object( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, fake_object, ) # Check expected values - self.app.restapi.head.assert_called_with( + self.app.client_manager.session.head.assert_called_with( fake_url + '/%s/%s' % (fake_container, fake_object), ) @@ -250,7 +252,7 @@ class TestObjectShowObjects(TestObject): 'object': fake_object, 'content-type': 'text/alpha', } - self.assertEqual(data, data_expected) + self.assertEqual(data_expected, data) def test_object_show_all_options(self): resp = { @@ -258,22 +260,23 @@ class TestObjectShowObjects(TestObject): 'content-length': 577, 'last-modified': '20130101', 'etag': 'qaz', + 'x-container-meta-owner': fake_account, 'x-object-manifest': None, 'x-object-meta-wife': 'Wilma', 'x-tra-header': 'yabba-dabba-do', } - self.app.restapi.head.return_value = \ - restapi.FakeResponse(headers=resp) + self.app.client_manager.session.head.return_value = \ + fakes.FakeResponse(headers=resp) data = lib_object.show_object( - self.app.restapi, + self.app.client_manager.session, fake_url, fake_container, fake_object, ) # Check expected values - self.app.restapi.head.assert_called_with( + self.app.client_manager.session.head.assert_called_with( fake_url + '/%s/%s' % (fake_container, fake_object), ) @@ -286,7 +289,7 @@ class TestObjectShowObjects(TestObject): 'last-modified': '20130101', 'etag': 'qaz', 'x-object-manifest': None, - 'Wife': 'Wilma', - 'X-Tra-Header': 'yabba-dabba-do', + 'wife': 'Wilma', + 'x-tra-header': 'yabba-dabba-do', } - self.assertEqual(data, data_expected) + self.assertEqual(data_expected, data) diff --git a/openstackclient/tests/object/v1/test_container.py b/openstackclient/tests/object/v1/test_container.py index 4afb1006..b72c79d6 100644 --- a/openstackclient/tests/object/v1/test_container.py +++ b/openstackclient/tests/object/v1/test_container.py @@ -77,7 +77,7 @@ class TestContainerList(TestObject): kwargs = { } c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, **kwargs ) @@ -113,7 +113,7 @@ class TestContainerList(TestObject): 'prefix': 'bit', } c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, **kwargs ) @@ -148,7 +148,7 @@ class TestContainerList(TestObject): 'marker': object_fakes.container_name, } c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, **kwargs ) @@ -183,7 +183,7 @@ class TestContainerList(TestObject): 'end_marker': object_fakes.container_name_3, } c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, **kwargs ) @@ -218,7 +218,7 @@ class TestContainerList(TestObject): 'limit': 2, } c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, **kwargs ) @@ -252,7 +252,7 @@ class TestContainerList(TestObject): kwargs = { } c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, **kwargs ) @@ -296,7 +296,7 @@ class TestContainerList(TestObject): 'full_listing': True, } c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, **kwargs ) @@ -341,7 +341,7 @@ class TestContainerShow(TestObject): } # lib.container.show_container(api, url, container) c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name, **kwargs diff --git a/openstackclient/tests/object/v1/test_object.py b/openstackclient/tests/object/v1/test_object.py index bea0d270..26d07b2c 100644 --- a/openstackclient/tests/object/v1/test_object.py +++ b/openstackclient/tests/object/v1/test_object.py @@ -71,7 +71,7 @@ class TestObjectList(TestObject): columns, data = self.cmd.take_action(parsed_args) o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name, ) @@ -107,7 +107,7 @@ class TestObjectList(TestObject): 'prefix': 'floppy', } o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name_2, **kwargs @@ -143,7 +143,7 @@ class TestObjectList(TestObject): 'delimiter': '=', } o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name_2, **kwargs @@ -179,7 +179,7 @@ class TestObjectList(TestObject): 'marker': object_fakes.object_name_2, } o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name_2, **kwargs @@ -215,7 +215,7 @@ class TestObjectList(TestObject): 'end_marker': object_fakes.object_name_2, } o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name_2, **kwargs @@ -251,7 +251,7 @@ class TestObjectList(TestObject): 'limit': 2, } o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name_2, **kwargs @@ -287,7 +287,7 @@ class TestObjectList(TestObject): kwargs = { } o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name, **kwargs @@ -337,7 +337,7 @@ class TestObjectList(TestObject): 'full_listing': True, } o_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name, **kwargs @@ -384,7 +384,7 @@ class TestObjectShow(TestObject): } # lib.container.show_container(api, url, container) c_mock.assert_called_with( - self.app.restapi, + self.app.client_manager.session, AUTH_URL, object_fakes.container_name, object_fakes.object_name_1, |
