Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 1 | # Copyright (c) 2016 Hewlett-Packard Enterprise Development Company, L.P. |
| 2 | # |
| 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| 4 | # use this file except in compliance with the License. You may obtain a copy of |
| 5 | # the License at |
| 6 | # |
| 7 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | # |
| 9 | # Unless required by applicable law or agreed to in writing, software |
| 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| 12 | # License for the specific language governing permissions and limitations under |
| 13 | # the License. |
| 14 | |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 15 | import fixtures |
Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 16 | import testtools |
| 17 | |
| 18 | from tempest.lib import auth |
| 19 | from tempest.lib import exceptions |
| 20 | from tempest import service_clients |
| 21 | from tempest.tests import base |
| 22 | from tempest.tests.lib import fake_credentials |
| 23 | |
| 24 | |
| 25 | class TestServiceClients(base.TestCase): |
| 26 | |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 27 | def setUp(self): |
| 28 | super(TestServiceClients, self).setUp() |
| 29 | self.useFixture(fixtures.MockPatch( |
| 30 | 'tempest.service_clients.tempest_modules', |
| 31 | return_value=set(['fake_service1', 'fake_service2']))) |
| 32 | |
| 33 | def test___init___creds_v2_uri(self): |
Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 34 | # Verify that no API request is made, since no mock |
| 35 | # is required to run the test successfully |
| 36 | creds = fake_credentials.FakeKeystoneV2Credentials() |
| 37 | uri = 'fake_uri' |
| 38 | _manager = service_clients.ServiceClients(creds, identity_uri=uri) |
| 39 | self.assertIsInstance(_manager.auth_provider, |
| 40 | auth.KeystoneV2AuthProvider) |
| 41 | |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 42 | def test___init___creds_v3_uri(self): |
Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 43 | # Verify that no API request is made, since no mock |
| 44 | # is required to run the test successfully |
| 45 | creds = fake_credentials.FakeKeystoneV3Credentials() |
| 46 | uri = 'fake_uri' |
| 47 | _manager = service_clients.ServiceClients(creds, identity_uri=uri) |
| 48 | self.assertIsInstance(_manager.auth_provider, |
| 49 | auth.KeystoneV3AuthProvider) |
| 50 | |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 51 | def test___init___base_creds_uri(self): |
Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 52 | creds = fake_credentials.FakeCredentials() |
| 53 | uri = 'fake_uri' |
| 54 | with testtools.ExpectedException(exceptions.InvalidCredentials): |
| 55 | service_clients.ServiceClients(creds, identity_uri=uri) |
| 56 | |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 57 | def test___init___invalid_creds_uri(self): |
Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 58 | creds = fake_credentials.FakeKeystoneV2Credentials() |
| 59 | delattr(creds, 'username') |
| 60 | uri = 'fake_uri' |
| 61 | with testtools.ExpectedException(exceptions.InvalidCredentials): |
| 62 | service_clients.ServiceClients(creds, identity_uri=uri) |
| 63 | |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 64 | def test___init___creds_uri_none(self): |
Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 65 | creds = fake_credentials.FakeKeystoneV2Credentials() |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 66 | msg = ("Invalid Credentials\nDetails: ServiceClients requires a " |
| 67 | "non-empty") |
Andrea Frittoli (andreaf) | 2395014 | 2016-06-13 12:39:29 +0100 | [diff] [blame] | 68 | with testtools.ExpectedException(exceptions.InvalidCredentials, |
| 69 | value_re=msg): |
| 70 | service_clients.ServiceClients(creds, None) |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 71 | |
| 72 | def test___init___creds_uri_params(self): |
| 73 | creds = fake_credentials.FakeKeystoneV2Credentials() |
| 74 | expeted_params = {'fake_param1': 'fake_value1', |
| 75 | 'fake_param2': 'fake_value2'} |
| 76 | params = {'fake_service1': expeted_params} |
| 77 | uri = 'fake_uri' |
| 78 | _manager = service_clients.ServiceClients(creds, identity_uri=uri, |
| 79 | client_parameters=params) |
Joe H. Rahme | a72f2c6 | 2016-07-11 16:28:19 +0200 | [diff] [blame] | 80 | self.assertIn('fake_service1', _manager.parameters) |
| 81 | for _key in expeted_params: |
Andrea Frittoli (andreaf) | de5fb0c | 2016-06-13 12:15:00 +0100 | [diff] [blame] | 82 | self.assertIn(_key, _manager.parameters['fake_service1'].keys()) |
| 83 | self.assertEqual(expeted_params[_key], |
| 84 | _manager.parameters['fake_service1'].get(_key)) |
| 85 | |
| 86 | def test___init___creds_uri_params_unknown_services(self): |
| 87 | creds = fake_credentials.FakeKeystoneV2Credentials() |
| 88 | fake_params = {'fake_param1': 'fake_value1'} |
| 89 | params = {'unknown_service1': fake_params, |
| 90 | 'unknown_service2': fake_params} |
| 91 | uri = 'fake_uri' |
| 92 | msg = "(?=.*{0})(?=.*{1})".format(*list(params.keys())) |
| 93 | with testtools.ExpectedException( |
| 94 | exceptions.UnknownServiceClient, value_re=msg): |
| 95 | service_clients.ServiceClients(creds, identity_uri=uri, |
| 96 | client_parameters=params) |
| 97 | |
| 98 | def _get_manager(self, init_region='fake_region'): |
| 99 | # Get a manager to invoke _setup_parameters on |
| 100 | creds = fake_credentials.FakeKeystoneV2Credentials() |
| 101 | return service_clients.ServiceClients(creds, identity_uri='fake_uri', |
| 102 | region=init_region) |
| 103 | |
| 104 | def test__setup_parameters_none_no_region(self): |
| 105 | kwargs = {} |
| 106 | _manager = self._get_manager(init_region=None) |
| 107 | _params = _manager._setup_parameters(kwargs) |
| 108 | self.assertNotIn('region', _params) |
| 109 | |
| 110 | def test__setup_parameters_none(self): |
| 111 | kwargs = {} |
| 112 | _manager = self._get_manager() |
| 113 | _params = _manager._setup_parameters(kwargs) |
| 114 | self.assertIn('region', _params) |
| 115 | self.assertEqual('fake_region', _params['region']) |
| 116 | |
| 117 | def test__setup_parameters_all(self): |
| 118 | expected_params = {'region': 'fake_region1', |
| 119 | 'catalog_type': 'fake_service2_mod', |
| 120 | 'fake_param1': 'fake_value1', |
| 121 | 'fake_param2': 'fake_value2'} |
| 122 | _manager = self._get_manager() |
| 123 | _params = _manager._setup_parameters(expected_params) |
| 124 | for _key in _params.keys(): |
| 125 | self.assertEqual(expected_params[_key], |
| 126 | _params[_key]) |