diff options
| author | Jenkins <jenkins@review.openstack.org> | 2014-09-17 07:25:28 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2014-09-17 07:25:28 +0000 |
| commit | d9a6f7fd3a26589f8d3cfb14fd568c93e9770c8e (patch) | |
| tree | bbf8a5c85746c0f0891e26deecdb10195d82b8f2 /openstackclient/tests | |
| parent | 0ff189720ef821733bcf727249b1e13f73a3584e (diff) | |
| parent | ae957b176e5918f41024c00cbc39ea371a0c37c6 (diff) | |
| download | python-openstackclient-d9a6f7fd3a26589f8d3cfb14fd568c93e9770c8e.tar.gz | |
Merge "Use Keystone client session.Session"
Diffstat (limited to 'openstackclient/tests')
| -rw-r--r-- | openstackclient/tests/common/test_clientmanager.py | 40 | ||||
| -rw-r--r-- | openstackclient/tests/common/test_restapi.py | 341 | ||||
| -rw-r--r-- | openstackclient/tests/identity/v2_0/fakes.py | 1 | ||||
| -rw-r--r-- | openstackclient/tests/identity/v2_0/test_token.py | 7 |
4 files changed, 23 insertions, 366 deletions
diff --git a/openstackclient/tests/common/test_clientmanager.py b/openstackclient/tests/common/test_clientmanager.py index 5a25fa2c..0bb657ad 100644 --- a/openstackclient/tests/common/test_clientmanager.py +++ b/openstackclient/tests/common/test_clientmanager.py @@ -13,8 +13,10 @@ # under the License. # +import mock + +from keystoneclient.auth.identity import v2 as auth_v2 from openstackclient.common import clientmanager -from openstackclient.common import restapi from openstackclient.tests import utils @@ -25,6 +27,10 @@ USERNAME = "itchy" PASSWORD = "scratchy" SERVICE_CATALOG = {'sc': '123'} +API_VERSION = { + 'identity': '2.0', +} + def FakeMakeClient(instance): return FakeClient() @@ -52,6 +58,7 @@ class TestClientCache(utils.TestCase): self.assertEqual(c.attr, c.attr) +@mock.patch('keystoneclient.session.Session') class TestClientManager(utils.TestCase): def setUp(self): super(TestClientManager, self).setUp() @@ -59,12 +66,13 @@ class TestClientManager(utils.TestCase): clientmanager.ClientManager.identity = \ clientmanager.ClientCache(FakeMakeClient) - def test_client_manager_token(self): + def test_client_manager_token(self, mock): client_manager = clientmanager.ClientManager( token=AUTH_TOKEN, url=AUTH_URL, verify=True, + api_version=API_VERSION, ) self.assertEqual( @@ -76,19 +84,20 @@ class TestClientManager(utils.TestCase): client_manager._url, ) self.assertIsInstance( - client_manager.session, - restapi.RESTApi, + client_manager.auth, + auth_v2.Token, ) self.assertFalse(client_manager._insecure) self.assertTrue(client_manager._verify) - def test_client_manager_password(self): + def test_client_manager_password(self, mock): client_manager = clientmanager.ClientManager( auth_url=AUTH_URL, username=USERNAME, password=PASSWORD, verify=False, + api_version=API_VERSION, ) self.assertEqual( @@ -104,33 +113,20 @@ class TestClientManager(utils.TestCase): client_manager._password, ) self.assertIsInstance( - client_manager.session, - restapi.RESTApi, + client_manager.auth, + auth_v2.Password, ) self.assertTrue(client_manager._insecure) self.assertFalse(client_manager._verify) - # These need to stick around until the old-style clients are gone - self.assertEqual( - AUTH_REF, - client_manager.auth_ref, - ) - self.assertEqual( - AUTH_TOKEN, - client_manager._token, - ) - self.assertEqual( - SERVICE_CATALOG, - client_manager._service_catalog, - ) - - def test_client_manager_password_verify_ca(self): + def test_client_manager_password_verify_ca(self, mock): client_manager = clientmanager.ClientManager( auth_url=AUTH_URL, username=USERNAME, password=PASSWORD, verify='cafile', + api_version=API_VERSION, ) self.assertFalse(client_manager._insecure) diff --git a/openstackclient/tests/common/test_restapi.py b/openstackclient/tests/common/test_restapi.py deleted file mode 100644 index d4fe2d3d..00000000 --- a/openstackclient/tests/common/test_restapi.py +++ /dev/null @@ -1,341 +0,0 @@ -# Copyright 2013 Nebula Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# - -"""Test rest module""" - -import json -import mock - -import requests -import six - -from openstackclient.common import restapi -from openstackclient.tests import utils - -fake_user_agent = 'test_rapi' - -fake_auth = '11223344556677889900' -fake_url = 'http://gopher.com' -fake_key = 'gopher' -fake_keys = 'gophers' -fake_gopher_mac = { - 'id': 'g1', - 'name': 'mac', - 'actor': 'Mel Blanc', -} -fake_gopher_tosh = { - 'id': 'g2', - 'name': 'tosh', - 'actor': 'Stan Freeberg', -} -fake_gopher_single = { - fake_key: fake_gopher_mac, -} -fake_gopher_list = { - fake_keys: - [ - fake_gopher_mac, - fake_gopher_tosh, - ] -} -fake_headers = { - 'User-Agent': fake_user_agent, -} - - -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() - - -@mock.patch('openstackclient.common.restapi.requests.Session') -class TestRESTApi(utils.TestCase): - - def test_request_get(self, session_mock): - resp = FakeResponse(status_code=200, data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi( - user_agent=fake_user_agent, - ) - gopher = api.request('GET', fake_url) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers={}, - allow_redirects=True, - ) - self.assertEqual(gopher.status_code, 200) - self.assertEqual(gopher.json(), fake_gopher_single) - - def test_request_get_return_300(self, session_mock): - resp = FakeResponse(status_code=300, data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi( - user_agent=fake_user_agent, - ) - gopher = api.request('GET', fake_url) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers={}, - allow_redirects=True, - ) - self.assertEqual(gopher.status_code, 300) - self.assertEqual(gopher.json(), fake_gopher_single) - - def test_request_get_fail_404(self, session_mock): - resp = FakeResponse(status_code=404, data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi( - user_agent=fake_user_agent, - ) - self.assertRaises(requests.HTTPError, api.request, 'GET', fake_url) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers={}, - allow_redirects=True, - ) - - def test_request_get_auth(self, session_mock): - resp = FakeResponse(data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - headers=mock.MagicMock(return_value={}), - ) - - api = restapi.RESTApi( - auth_header=fake_auth, - user_agent=fake_user_agent, - ) - gopher = api.request('GET', fake_url) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers={ - 'X-Auth-Token': fake_auth, - }, - allow_redirects=True, - ) - self.assertEqual(gopher.json(), fake_gopher_single) - - def test_request_post(self, session_mock): - resp = FakeResponse(data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi( - user_agent=fake_user_agent, - ) - data = fake_gopher_tosh - gopher = api.request('POST', fake_url, json=data) - session_mock.return_value.request.assert_called_with( - 'POST', - fake_url, - headers={ - 'Content-Type': 'application/json', - }, - allow_redirects=True, - data=json.dumps(data), - ) - self.assertEqual(gopher.json(), fake_gopher_single) - - # Methods - # TODO(dtroyer): add the other method methods - - def test_delete(self, session_mock): - resp = FakeResponse(status_code=200, data=None) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi() - gopher = api.delete(fake_url) - session_mock.return_value.request.assert_called_with( - 'DELETE', - fake_url, - headers=mock.ANY, - allow_redirects=True, - ) - self.assertEqual(gopher.status_code, 200) - - # Commands - - def test_create(self, session_mock): - resp = FakeResponse(data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi() - data = fake_gopher_mac - - # Test no key - gopher = api.create(fake_url, data=data) - session_mock.return_value.request.assert_called_with( - 'POST', - fake_url, - headers=mock.ANY, - allow_redirects=True, - data=json.dumps(data), - ) - self.assertEqual(gopher, fake_gopher_single) - - # Test with key - gopher = api.create(fake_url, data=data, response_key=fake_key) - session_mock.return_value.request.assert_called_with( - 'POST', - fake_url, - headers=mock.ANY, - allow_redirects=True, - data=json.dumps(data), - ) - self.assertEqual(gopher, fake_gopher_mac) - - def test_list(self, session_mock): - resp = FakeResponse(data=fake_gopher_list) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - # test base - api = restapi.RESTApi() - gopher = api.list(fake_url, response_key=fake_keys) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers=mock.ANY, - allow_redirects=True, - ) - self.assertEqual(gopher, [fake_gopher_mac, fake_gopher_tosh]) - - # test body - api = restapi.RESTApi() - data = {'qwerty': 1} - gopher = api.list(fake_url, response_key=fake_keys, data=data) - session_mock.return_value.request.assert_called_with( - 'POST', - fake_url, - headers=mock.ANY, - allow_redirects=True, - data=json.dumps(data), - ) - self.assertEqual(gopher, [fake_gopher_mac, fake_gopher_tosh]) - - # test query params - api = restapi.RESTApi() - params = {'qaz': '123'} - gophers = api.list(fake_url, response_key=fake_keys, params=params) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers=mock.ANY, - allow_redirects=True, - params=params, - ) - self.assertEqual(gophers, [fake_gopher_mac, fake_gopher_tosh]) - - def test_set(self, session_mock): - new_gopher = fake_gopher_single - new_gopher[fake_key]['name'] = 'Chip' - resp = FakeResponse(data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi() - data = fake_gopher_mac - data['name'] = 'Chip' - - # Test no data, no key - gopher = api.set(fake_url) - session_mock.return_value.request.assert_called_with( - 'PUT', - fake_url, - headers=mock.ANY, - allow_redirects=True, - json=None, - ) - self.assertEqual(gopher, None) - - # Test data, no key - gopher = api.set(fake_url, data=data) - session_mock.return_value.request.assert_called_with( - 'PUT', - fake_url, - headers=mock.ANY, - allow_redirects=True, - data=json.dumps(data), - ) - self.assertEqual(gopher, fake_gopher_single) - - # NOTE:(dtroyer): Key and no data is not tested as without data - # the response_key is moot - - # Test data and key - gopher = api.set(fake_url, data=data, response_key=fake_key) - session_mock.return_value.request.assert_called_with( - 'PUT', - fake_url, - headers=mock.ANY, - allow_redirects=True, - data=json.dumps(data), - ) - self.assertEqual(gopher, fake_gopher_mac) - - def test_show(self, session_mock): - resp = FakeResponse(data=fake_gopher_single) - session_mock.return_value = mock.MagicMock( - request=mock.MagicMock(return_value=resp), - ) - - api = restapi.RESTApi() - - # Test no key - gopher = api.show(fake_url) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers=mock.ANY, - allow_redirects=True, - ) - self.assertEqual(gopher, fake_gopher_single) - - # Test with key - gopher = api.show(fake_url, response_key=fake_key) - session_mock.return_value.request.assert_called_with( - 'GET', - fake_url, - headers=mock.ANY, - allow_redirects=True, - ) - self.assertEqual(gopher, fake_gopher_mac) diff --git a/openstackclient/tests/identity/v2_0/fakes.py b/openstackclient/tests/identity/v2_0/fakes.py index a8438e96..b136f841 100644 --- a/openstackclient/tests/identity/v2_0/fakes.py +++ b/openstackclient/tests/identity/v2_0/fakes.py @@ -125,7 +125,6 @@ class FakeIdentityv2Client(object): def __init__(self, **kwargs): self.roles = mock.Mock() self.roles.resource_class = fakes.FakeResource(None, {}) - self.service_catalog = mock.Mock() self.services = mock.Mock() self.services.resource_class = fakes.FakeResource(None, {}) self.tenants = mock.Mock() diff --git a/openstackclient/tests/identity/v2_0/test_token.py b/openstackclient/tests/identity/v2_0/test_token.py index e094ad4a..4184326c 100644 --- a/openstackclient/tests/identity/v2_0/test_token.py +++ b/openstackclient/tests/identity/v2_0/test_token.py @@ -13,6 +13,8 @@ # under the License. # +import mock + from openstackclient.identity.v2_0 import token from openstackclient.tests.identity.v2_0 import fakes as identity_fakes @@ -23,8 +25,9 @@ class TestToken(identity_fakes.TestIdentityv2): super(TestToken, self).setUp() # Get a shortcut to the Service Catalog Mock - self.sc_mock = self.app.client_manager.identity.service_catalog - self.sc_mock.reset_mock() + self.sc_mock = mock.Mock() + self.app.client_manager.auth_ref = mock.Mock() + self.app.client_manager.auth_ref.service_catalog = self.sc_mock class TestTokenIssue(TestToken): |
