blob: a559086ef30302d87551efe4af76f18441c6eaba [file] [log] [blame]
Andrea Frittoli (andreaf)23950142016-06-13 12:39:29 +01001# 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)de5fb0c2016-06-13 12:15:00 +010015import fixtures
Andrea Frittoli (andreaf)23950142016-06-13 12:39:29 +010016import testtools
17
18from tempest.lib import auth
19from tempest.lib import exceptions
20from tempest import service_clients
21from tempest.tests import base
22from tempest.tests.lib import fake_credentials
23
24
25class TestServiceClients(base.TestCase):
26
Andrea Frittoli (andreaf)de5fb0c2016-06-13 12:15:00 +010027 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)23950142016-06-13 12:39:29 +010034 # 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)de5fb0c2016-06-13 12:15:00 +010042 def test___init___creds_v3_uri(self):
Andrea Frittoli (andreaf)23950142016-06-13 12:39:29 +010043 # 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)de5fb0c2016-06-13 12:15:00 +010051 def test___init___base_creds_uri(self):
Andrea Frittoli (andreaf)23950142016-06-13 12:39:29 +010052 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)de5fb0c2016-06-13 12:15:00 +010057 def test___init___invalid_creds_uri(self):
Andrea Frittoli (andreaf)23950142016-06-13 12:39:29 +010058 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)de5fb0c2016-06-13 12:15:00 +010064 def test___init___creds_uri_none(self):
Andrea Frittoli (andreaf)23950142016-06-13 12:39:29 +010065 creds = fake_credentials.FakeKeystoneV2Credentials()
Andrea Frittoli (andreaf)de5fb0c2016-06-13 12:15:00 +010066 msg = ("Invalid Credentials\nDetails: ServiceClients requires a "
67 "non-empty")
Andrea Frittoli (andreaf)23950142016-06-13 12:39:29 +010068 with testtools.ExpectedException(exceptions.InvalidCredentials,
69 value_re=msg):
70 service_clients.ServiceClients(creds, None)
Andrea Frittoli (andreaf)de5fb0c2016-06-13 12:15:00 +010071
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. Rahmea72f2c62016-07-11 16:28:19 +020080 self.assertIn('fake_service1', _manager.parameters)
81 for _key in expeted_params:
Andrea Frittoli (andreaf)de5fb0c2016-06-13 12:15:00 +010082 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])