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_minimal(self):
140 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
141 project_name='hello')
142 self.assertEqual('foo', os_creds.username)
143 self.assertEqual('bar', os_creds.password)
144 self.assertEqual('http://foo.bar:5000/v2.0', os_creds.auth_url)
145 self.assertEqual('hello', os_creds.project_name)
146 self.assertEqual(2, os_creds.identity_api_version)
147 self.assertEqual(2, os_creds.image_api_version)
148 self.assertEqual(2, os_creds.compute_api_version)
149 self.assertEqual(1, os_creds.heat_api_version)
150 self.assertIsNone(os_creds.user_domain_id)
151 self.assertEqual('default', os_creds.user_domain_name)
152 self.assertIsNone(os_creds.project_domain_id)
153 self.assertEqual('default', os_creds.project_domain_name)
154 self.assertEqual('admin', os_creds.interface)
155 self.assertFalse(os_creds.cacert)
156 self.assertIsNone(os_creds.proxy_settings)
157 self.assertIsNone(os_creds.region_name)
159 def test_minimal_kwargs(self):
160 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
161 'auth_url': 'http://foo.bar:5000/v2',
162 'project_name': 'hello'})
163 self.assertEqual('foo', os_creds.username)
164 self.assertEqual('bar', os_creds.password)
165 self.assertEqual('http://foo.bar:5000/v2.0', os_creds.auth_url)
166 self.assertEqual('hello', os_creds.project_name)
167 self.assertEqual(2, os_creds.identity_api_version)
168 self.assertEqual(2, os_creds.image_api_version)
169 self.assertEqual(2, os_creds.compute_api_version)
170 self.assertEqual(1, os_creds.heat_api_version)
171 self.assertIsNone(os_creds.user_domain_id)
172 self.assertEqual('default', os_creds.user_domain_name)
173 self.assertIsNone(os_creds.project_domain_id)
174 self.assertEqual('default', os_creds.project_domain_name)
175 self.assertEqual('admin', os_creds.interface)
176 self.assertFalse(os_creds.cacert)
177 self.assertIsNone(os_creds.proxy_settings)
178 self.assertIsNone(os_creds.region_name)
180 def test_all_kwargs_versions_str(self):
182 **{'username': 'foo', 'password': 'bar',
183 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
184 'identity_api_version': '5', 'image_api_version': '6',
185 'compute_api_version': '7', 'heat_api_version': '8.0',
186 'cacert': 'true', 'region_name': 'test_region'})
187 self.assertEqual('foo', os_creds.username)
188 self.assertEqual('bar', os_creds.password)
189 self.assertEqual('http://foo.bar:5000/v5', os_creds.auth_url)
190 self.assertEqual('hello', os_creds.project_name)
191 self.assertEqual(5, os_creds.identity_api_version)
192 self.assertEqual(6, os_creds.image_api_version)
193 self.assertEqual(7, os_creds.compute_api_version)
194 self.assertEqual(8.0, os_creds.heat_api_version)
195 self.assertIsNone(os_creds.user_domain_id)
196 self.assertEqual('default', os_creds.user_domain_name)
197 self.assertIsNone(os_creds.project_domain_id)
198 self.assertEqual('default', os_creds.project_domain_name)
199 self.assertEqual('admin', os_creds.interface)
200 self.assertTrue(os_creds.cacert)
201 self.assertIsNone(os_creds.proxy_settings)
202 self.assertEqual('test_region', os_creds.region_name)
204 def test_all_kwargs_versions_num(self):
206 **{'username': 'foo', 'password': 'bar',
207 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
208 'identity_api_version': 5, 'image_api_version': 6,
209 'compute_api_version': 7, 'heat_api_version': 8.0,
210 'cacert': True, 'region_name': 'test_region'})
211 self.assertEqual('foo', os_creds.username)
212 self.assertEqual('bar', os_creds.password)
213 self.assertEqual('http://foo.bar:5000/v5', os_creds.auth_url)
214 self.assertEqual('hello', os_creds.project_name)
215 self.assertEqual(5, os_creds.identity_api_version)
216 self.assertEqual(6, os_creds.image_api_version)
217 self.assertEqual(7, os_creds.compute_api_version)
218 self.assertEqual(8.0, os_creds.heat_api_version)
219 self.assertIsNone(os_creds.user_domain_id)
220 self.assertEqual('default', os_creds.user_domain_name)
221 self.assertIsNone(os_creds.project_domain_id)
222 self.assertEqual('default', os_creds.project_domain_name)
223 self.assertEqual('admin', os_creds.interface)
224 self.assertTrue(os_creds.cacert)
225 self.assertIsNone(os_creds.proxy_settings)
226 self.assertEqual('test_region', os_creds.region_name)
228 def test_proxy_settings_obj(self):
229 proxy_settings = ProxySettings(host='foo', port=1234)
231 username='foo', password='bar', auth_url='http://foo.bar:5000/',
232 project_name='hello', proxy_settings=proxy_settings)
233 self.assertEqual('foo', os_creds.username)
234 self.assertEqual('bar', os_creds.password)
235 self.assertEqual('http://foo.bar:5000/v2.0', os_creds.auth_url)
236 self.assertEqual('hello', os_creds.project_name)
237 self.assertEqual(2, os_creds.identity_api_version)
238 self.assertEqual(2, os_creds.image_api_version)
239 self.assertEqual(2, os_creds.compute_api_version)
240 self.assertEqual(1, os_creds.heat_api_version)
241 self.assertIsNone(os_creds.user_domain_id)
242 self.assertEqual('default', os_creds.user_domain_name)
243 self.assertIsNone(os_creds.project_domain_id)
244 self.assertEqual('default', os_creds.project_domain_name)
245 self.assertEqual('admin', os_creds.interface)
246 self.assertFalse(os_creds.cacert)
247 self.assertEqual('foo', os_creds.proxy_settings.host)
248 self.assertEqual('1234', os_creds.proxy_settings.port)
249 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
250 self.assertIsNone(os_creds.region_name)
252 def test_proxy_settings_obj_kwargs(self):
253 proxy_settings = ProxySettings(host='foo', port=1234)
255 **{'username': 'foo', 'password': 'bar',
256 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
257 'proxy_settings': proxy_settings, 'region_name': 'test_region',
258 'user_domain_id': 'domain1', 'user_domain_name': 'domain2',
259 'project_domain_id': 'domain3',
260 'project_domain_name': 'domain4'})
261 self.assertEqual('foo', os_creds.username)
262 self.assertEqual('bar', os_creds.password)
263 self.assertEqual('http://foo.bar:5000/v2.0', os_creds.auth_url)
264 self.assertEqual('hello', os_creds.project_name)
265 self.assertEqual(2, os_creds.identity_api_version)
266 self.assertEqual(2, os_creds.image_api_version)
267 self.assertEqual(2, os_creds.compute_api_version)
268 self.assertEqual(1, os_creds.heat_api_version)
269 self.assertEqual('domain1', os_creds.user_domain_id)
270 self.assertEqual('domain2', os_creds.user_domain_name)
271 self.assertEqual('domain3', os_creds.project_domain_id)
272 self.assertEqual('domain4', os_creds.project_domain_name)
273 self.assertEqual('admin', os_creds.interface)
274 self.assertFalse(os_creds.cacert)
275 self.assertEqual('foo', os_creds.proxy_settings.host)
276 self.assertEqual('1234', os_creds.proxy_settings.port)
277 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
278 self.assertEqual('test_region', os_creds.region_name)
280 def test_proxy_settings_dict(self):
282 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
283 project_name='hello', proxy_settings={'host': 'foo', 'port': 1234},
284 user_domain_id='domain1', user_domain_name='domain2',
285 project_domain_id='domain3', project_domain_name='domain4')
286 self.assertEqual('foo', os_creds.username)
287 self.assertEqual('bar', os_creds.password)
288 self.assertEqual('http://foo.bar:5000/v2.0', os_creds.auth_url)
289 self.assertEqual('hello', os_creds.project_name)
290 self.assertEqual(2, os_creds.identity_api_version)
291 self.assertEqual(2, os_creds.image_api_version)
292 self.assertEqual(2, os_creds.compute_api_version)
293 self.assertEqual(1, os_creds.heat_api_version)
294 self.assertEqual('domain1', os_creds.user_domain_id)
295 self.assertEqual('domain2', os_creds.user_domain_name)
296 self.assertEqual('domain3', os_creds.project_domain_id)
297 self.assertEqual('domain4', os_creds.project_domain_name)
298 self.assertEqual('admin', os_creds.interface)
299 self.assertFalse(os_creds.cacert)
300 self.assertEqual('foo', os_creds.proxy_settings.host)
301 self.assertEqual('1234', os_creds.proxy_settings.port)
302 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
304 def test_proxy_settings_dict_kwargs(self):
306 **{'username': 'foo', 'password': 'bar',
307 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
308 'proxy_settings': {'host': 'foo', 'port': 1234},
309 'region_name': 'test_region'})
310 self.assertEqual('foo', os_creds.username)
311 self.assertEqual('bar', os_creds.password)
312 self.assertEqual('http://foo.bar:5000/v2.0', os_creds.auth_url)
313 self.assertEqual('hello', os_creds.project_name)
314 self.assertEqual(2, os_creds.identity_api_version)
315 self.assertEqual(2, os_creds.image_api_version)
316 self.assertEqual(2, os_creds.compute_api_version)
317 self.assertEqual(1, os_creds.heat_api_version)
318 self.assertIsNone(os_creds.user_domain_id)
319 self.assertEqual('default', os_creds.user_domain_name)
320 self.assertIsNone(os_creds.project_domain_id)
321 self.assertEqual('default', os_creds.project_domain_name)
322 self.assertEqual('admin', os_creds.interface)
323 self.assertFalse(os_creds.cacert)
324 self.assertEqual('foo', os_creds.proxy_settings.host)
325 self.assertEqual('1234', os_creds.proxy_settings.port)
326 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
327 self.assertEqual('test_region', os_creds.region_name)