1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 # and others. All rights reserved.
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
19 from snaps.openstack.os_credentials import (
20 OSCredsError, OSCreds, ProxySettings, ProxySettingsError)
22 __author__ = 'spisarski'
24 logger = logging.getLogger('os_credentials_test')
27 class ProxySettingsUnitTests(unittest.TestCase):
29 Tests the construction of the ProxySettings class
32 def test_no_params(self):
33 with self.assertRaises(ProxySettingsError):
36 def test_empty_kwargs(self):
37 with self.assertRaises(ProxySettingsError):
38 ProxySettings(**dict())
40 def test_host_only(self):
41 with self.assertRaises(ProxySettingsError):
42 ProxySettings(host='foo')
44 def test_host_only_kwargs(self):
45 with self.assertRaises(ProxySettingsError):
46 ProxySettings(**{'host': 'foo'})
48 def test_port_only(self):
49 with self.assertRaises(ProxySettingsError):
50 ProxySettings(port=1234)
52 def test_port_only_kwargs(self):
53 with self.assertRaises(ProxySettingsError):
54 ProxySettings(**{'port': 1234})
56 def test_minimum(self):
57 proxy_settings = ProxySettings(host='foo', port=1234)
58 self.assertEqual('foo', proxy_settings.host)
59 self.assertEqual('1234', proxy_settings.port)
60 self.assertEqual('foo', proxy_settings.https_host)
61 self.assertEqual('1234', proxy_settings.https_port)
62 self.assertIsNone(proxy_settings.ssh_proxy_cmd)
64 def test_minimum_kwargs(self):
65 proxy_settings = ProxySettings(**{'host': 'foo', 'port': 1234})
66 self.assertEqual('foo', proxy_settings.host)
67 self.assertEqual('1234', proxy_settings.port)
68 self.assertEqual('foo', proxy_settings.https_host)
69 self.assertEqual('1234', proxy_settings.https_port)
70 self.assertIsNone(proxy_settings.ssh_proxy_cmd)
73 proxy_settings = ProxySettings(
74 host='foo', port=1234, https_host='bar', https_port=2345,
75 ssh_proxy_cmd='proxy command')
76 self.assertEqual('foo', proxy_settings.host)
77 self.assertEqual('1234', proxy_settings.port)
78 self.assertEqual('bar', proxy_settings.https_host)
79 self.assertEqual('2345', proxy_settings.https_port)
80 self.assertEqual('proxy command', proxy_settings.ssh_proxy_cmd)
82 def test_all_kwargs(self):
83 proxy_settings = ProxySettings(
84 **{'host': 'foo', 'port': 1234, 'https_host': 'bar',
85 'https_port': 2345, 'ssh_proxy_cmd': 'proxy command'})
86 self.assertEqual('foo', proxy_settings.host)
87 self.assertEqual('1234', proxy_settings.port)
88 self.assertEqual('bar', proxy_settings.https_host)
89 self.assertEqual('2345', proxy_settings.https_port)
90 self.assertEqual('proxy command', proxy_settings.ssh_proxy_cmd)
93 class OSCredsUnitTests(unittest.TestCase):
95 Tests the construction of the OSCreds class
98 def test_no_params(self):
99 with self.assertRaises(OSCredsError):
102 def test_empty_kwargs(self):
103 with self.assertRaises(OSCredsError):
106 def test_username_only(self):
107 with self.assertRaises(OSCredsError):
108 OSCreds(username='foo')
110 def test_username_only_kwargs(self):
111 with self.assertRaises(OSCredsError):
112 OSCreds(**{'username': 'foo'})
114 def test_password_only(self):
115 with self.assertRaises(OSCredsError):
116 OSCreds(password='foo')
118 def test_password_only_kwargs(self):
119 with self.assertRaises(OSCredsError):
120 OSCreds(**{'password': 'foo'})
122 def test_auth_url_only(self):
123 with self.assertRaises(OSCredsError):
124 OSCreds(auth_url='foo')
126 def test_auth_url_only_kwargs(self):
127 with self.assertRaises(OSCredsError):
128 OSCreds(**{'auth_url': 'foo'})
130 def test_project_name_only(self):
131 with self.assertRaises(OSCredsError):
132 OSCreds(project_name='foo')
134 def test_project_name_only_kwargs(self):
135 with self.assertRaises(OSCredsError):
136 OSCreds(**{'project_name': 'foo'})
138 def test_invalid_auth_url(self):
139 with self.assertRaises(OSCredsError):
140 OSCreds(username='foo', password='bar',
141 auth_url='http://foo.bar', project_name='hello')
143 def test_invalid_auth_url_kwargs(self):
144 with self.assertRaises(OSCredsError):
145 OSCreds(**{'username': 'foo', 'password': 'bar',
146 'auth_url': 'http://foo.bar', 'project_name': 'hello'})
148 def test_minimal(self):
150 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
151 project_name='hello')
152 self.assertEqual('foo', os_creds.username)
153 self.assertEqual('bar', os_creds.password)
154 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
155 self.assertEqual('hello', os_creds.project_name)
156 self.assertEqual(2, os_creds.identity_api_version)
157 self.assertEqual(2, os_creds.image_api_version)
158 self.assertEqual(2, os_creds.compute_api_version)
159 self.assertEqual(1, os_creds.heat_api_version)
160 self.assertEqual('default', os_creds.user_domain_id)
161 self.assertEqual('Default', os_creds.user_domain_name)
162 self.assertEqual('default', os_creds.project_domain_id)
163 self.assertEqual('Default', os_creds.project_domain_name)
164 self.assertEqual('admin', os_creds.interface)
165 self.assertFalse(os_creds.cacert)
166 self.assertIsNone(os_creds.proxy_settings)
167 self.assertIsNone(os_creds.region_name)
169 def test_minimal_kwargs(self):
170 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
171 'auth_url': 'http://foo.bar:5000/v2',
172 'project_name': 'hello'})
173 self.assertEqual('foo', os_creds.username)
174 self.assertEqual('bar', os_creds.password)
175 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
176 self.assertEqual('hello', os_creds.project_name)
177 self.assertEqual(2, os_creds.identity_api_version)
178 self.assertEqual(2, os_creds.image_api_version)
179 self.assertEqual(2, os_creds.compute_api_version)
180 self.assertEqual(1, os_creds.heat_api_version)
181 self.assertEqual('default', os_creds.user_domain_id)
182 self.assertEqual('Default', os_creds.user_domain_name)
183 self.assertEqual('default', os_creds.project_domain_id)
184 self.assertEqual('Default', os_creds.project_domain_name)
185 self.assertEqual('admin', os_creds.interface)
186 self.assertFalse(os_creds.cacert)
187 self.assertIsNone(os_creds.proxy_settings)
188 self.assertIsNone(os_creds.region_name)
190 def test_all_kwargs_versions_str(self):
192 **{'username': 'foo', 'password': 'bar',
193 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
194 'identity_api_version': '5', 'image_api_version': '6',
195 'compute_api_version': '7', 'heat_api_version': '8.0',
196 'cacert': 'true', 'region_name': 'test_region'})
197 self.assertEqual('foo', os_creds.username)
198 self.assertEqual('bar', os_creds.password)
199 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
200 self.assertEqual('hello', os_creds.project_name)
201 self.assertEqual(5, os_creds.identity_api_version)
202 self.assertEqual(6, os_creds.image_api_version)
203 self.assertEqual(7, os_creds.compute_api_version)
204 self.assertEqual(8.0, os_creds.heat_api_version)
205 self.assertEqual('default', os_creds.user_domain_id)
206 self.assertEqual('Default', os_creds.user_domain_name)
207 self.assertEqual('default', os_creds.project_domain_id)
208 self.assertEqual('Default', os_creds.project_domain_name)
209 self.assertEqual('admin', os_creds.interface)
210 self.assertTrue(os_creds.cacert)
211 self.assertIsNone(os_creds.proxy_settings)
212 self.assertEqual('test_region', os_creds.region_name)
214 def test_all_kwargs_versions_num(self):
216 **{'username': 'foo', 'password': 'bar',
217 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
218 'identity_api_version': 5, 'image_api_version': 6,
219 'compute_api_version': 7, 'heat_api_version': 8.0,
220 'cacert': True, 'region_name': 'test_region'})
221 self.assertEqual('foo', os_creds.username)
222 self.assertEqual('bar', os_creds.password)
223 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
224 self.assertEqual('hello', os_creds.project_name)
225 self.assertEqual(5, os_creds.identity_api_version)
226 self.assertEqual(6, os_creds.image_api_version)
227 self.assertEqual(7, os_creds.compute_api_version)
228 self.assertEqual(8.0, os_creds.heat_api_version)
229 self.assertEqual('default', os_creds.user_domain_id)
230 self.assertEqual('Default', os_creds.user_domain_name)
231 self.assertEqual('default', os_creds.project_domain_id)
232 self.assertEqual('Default', os_creds.project_domain_name)
233 self.assertEqual('admin', os_creds.interface)
234 self.assertTrue(os_creds.cacert)
235 self.assertIsNone(os_creds.proxy_settings)
236 self.assertEqual('test_region', os_creds.region_name)
238 def test_proxy_settings_obj(self):
239 proxy_settings = ProxySettings(host='foo', port=1234)
241 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
242 project_name='hello', proxy_settings=proxy_settings)
243 self.assertEqual('foo', os_creds.username)
244 self.assertEqual('bar', os_creds.password)
245 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
246 self.assertEqual('hello', os_creds.project_name)
247 self.assertEqual(2, os_creds.identity_api_version)
248 self.assertEqual(2, os_creds.image_api_version)
249 self.assertEqual(2, os_creds.compute_api_version)
250 self.assertEqual(1, os_creds.heat_api_version)
251 self.assertEqual('default', os_creds.user_domain_id)
252 self.assertEqual('Default', os_creds.user_domain_name)
253 self.assertEqual('default', os_creds.project_domain_id)
254 self.assertEqual('Default', os_creds.project_domain_name)
255 self.assertEqual('admin', os_creds.interface)
256 self.assertFalse(os_creds.cacert)
257 self.assertEqual('foo', os_creds.proxy_settings.host)
258 self.assertEqual('1234', os_creds.proxy_settings.port)
259 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
260 self.assertIsNone(os_creds.region_name)
262 def test_proxy_settings_obj_kwargs(self):
263 proxy_settings = ProxySettings(host='foo', port=1234)
265 **{'username': 'foo', 'password': 'bar',
266 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
267 'proxy_settings': proxy_settings, 'region_name': 'test_region',
268 'user_domain_id': 'domain1', 'user_domain_name': 'domain2',
269 'project_domain_id': 'domain3',
270 'project_domain_name': 'domain4'})
271 self.assertEqual('foo', os_creds.username)
272 self.assertEqual('bar', os_creds.password)
273 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
274 self.assertEqual('hello', os_creds.project_name)
275 self.assertEqual(2, os_creds.identity_api_version)
276 self.assertEqual(2, os_creds.image_api_version)
277 self.assertEqual(2, os_creds.compute_api_version)
278 self.assertEqual(1, os_creds.heat_api_version)
279 self.assertEqual('domain1', os_creds.user_domain_id)
280 self.assertEqual('domain2', os_creds.user_domain_name)
281 self.assertEqual('domain3', os_creds.project_domain_id)
282 self.assertEqual('domain4', os_creds.project_domain_name)
283 self.assertEqual('admin', os_creds.interface)
284 self.assertFalse(os_creds.cacert)
285 self.assertEqual('foo', os_creds.proxy_settings.host)
286 self.assertEqual('1234', os_creds.proxy_settings.port)
287 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
288 self.assertEqual('test_region', os_creds.region_name)
290 def test_proxy_settings_dict(self):
292 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
293 project_name='hello', proxy_settings={'host': 'foo', 'port': 1234},
294 user_domain_id='domain1', user_domain_name='domain2',
295 project_domain_id='domain3', project_domain_name='domain4')
296 self.assertEqual('foo', os_creds.username)
297 self.assertEqual('bar', os_creds.password)
298 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
299 self.assertEqual('hello', os_creds.project_name)
300 self.assertEqual(2, os_creds.identity_api_version)
301 self.assertEqual(2, os_creds.image_api_version)
302 self.assertEqual(2, os_creds.compute_api_version)
303 self.assertEqual(1, os_creds.heat_api_version)
304 self.assertEqual('domain1', os_creds.user_domain_id)
305 self.assertEqual('domain2', os_creds.user_domain_name)
306 self.assertEqual('domain3', os_creds.project_domain_id)
307 self.assertEqual('domain4', os_creds.project_domain_name)
308 self.assertEqual('admin', os_creds.interface)
309 self.assertFalse(os_creds.cacert)
310 self.assertEqual('foo', os_creds.proxy_settings.host)
311 self.assertEqual('1234', os_creds.proxy_settings.port)
312 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
314 def test_proxy_settings_dict_kwargs(self):
316 **{'username': 'foo', 'password': 'bar',
317 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
318 'proxy_settings': {'host': 'foo', 'port': 1234},
319 'region_name': 'test_region'})
320 self.assertEqual('foo', os_creds.username)
321 self.assertEqual('bar', os_creds.password)
322 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
323 self.assertEqual('hello', os_creds.project_name)
324 self.assertEqual(2, os_creds.identity_api_version)
325 self.assertEqual(2, os_creds.image_api_version)
326 self.assertEqual(2, os_creds.compute_api_version)
327 self.assertEqual(1, os_creds.heat_api_version)
328 self.assertEqual('default', os_creds.user_domain_id)
329 self.assertEqual('Default', os_creds.user_domain_name)
330 self.assertEqual('default', os_creds.project_domain_id)
331 self.assertEqual('Default', os_creds.project_domain_name)
332 self.assertEqual('admin', os_creds.interface)
333 self.assertFalse(os_creds.cacert)
334 self.assertEqual('foo', os_creds.proxy_settings.host)
335 self.assertEqual('1234', os_creds.proxy_settings.port)
336 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
337 self.assertEqual('test_region', os_creds.region_name)