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 OSCredsError, OSCreds, \
20 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.project_domain_id)
162 self.assertEqual('admin', os_creds.interface)
163 self.assertFalse(os_creds.cacert)
164 self.assertIsNone(os_creds.proxy_settings)
165 self.assertIsNone(os_creds.region_name)
167 def test_minimal_kwargs(self):
168 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
169 'auth_url': 'http://foo.bar:5000/v2',
170 'project_name': 'hello'})
171 self.assertEqual('foo', os_creds.username)
172 self.assertEqual('bar', os_creds.password)
173 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
174 self.assertEqual('hello', os_creds.project_name)
175 self.assertEqual(2, os_creds.identity_api_version)
176 self.assertEqual(2, os_creds.image_api_version)
177 self.assertEqual(2, os_creds.compute_api_version)
178 self.assertEqual(1, os_creds.heat_api_version)
179 self.assertEqual('default', os_creds.user_domain_id)
180 self.assertEqual('default', os_creds.project_domain_id)
181 self.assertEqual('admin', os_creds.interface)
182 self.assertFalse(os_creds.cacert)
183 self.assertIsNone(os_creds.proxy_settings)
184 self.assertIsNone(os_creds.region_name)
186 def test_all_kwargs_versions_str(self):
188 **{'username': 'foo', 'password': 'bar',
189 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
190 'identity_api_version': '5', 'image_api_version': '6',
191 'compute_api_version': '7', 'heat_api_version': '8.0',
192 'cacert': 'true', 'region_name': 'test_region'})
193 self.assertEqual('foo', os_creds.username)
194 self.assertEqual('bar', os_creds.password)
195 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
196 self.assertEqual('hello', os_creds.project_name)
197 self.assertEqual(5, os_creds.identity_api_version)
198 self.assertEqual(6, os_creds.image_api_version)
199 self.assertEqual(7, os_creds.compute_api_version)
200 self.assertEqual(8.0, os_creds.heat_api_version)
201 self.assertEqual('default', os_creds.user_domain_id)
202 self.assertEqual('default', os_creds.project_domain_id)
203 self.assertEqual('admin', os_creds.interface)
204 self.assertTrue(os_creds.cacert)
205 self.assertIsNone(os_creds.proxy_settings)
206 self.assertEqual('test_region', os_creds.region_name)
208 def test_all_kwargs_versions_num(self):
210 **{'username': 'foo', 'password': 'bar',
211 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
212 'identity_api_version': 5, 'image_api_version': 6,
213 'compute_api_version': 7, 'heat_api_version': 8.0,
214 'cacert': True, 'region_name': 'test_region'})
215 self.assertEqual('foo', os_creds.username)
216 self.assertEqual('bar', os_creds.password)
217 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
218 self.assertEqual('hello', os_creds.project_name)
219 self.assertEqual(5, os_creds.identity_api_version)
220 self.assertEqual(6, os_creds.image_api_version)
221 self.assertEqual(7, os_creds.compute_api_version)
222 self.assertEqual(8.0, os_creds.heat_api_version)
223 self.assertEqual('default', os_creds.user_domain_id)
224 self.assertEqual('default', os_creds.project_domain_id)
225 self.assertEqual('admin', os_creds.interface)
226 self.assertTrue(os_creds.cacert)
227 self.assertIsNone(os_creds.proxy_settings)
228 self.assertEqual('test_region', os_creds.region_name)
230 def test_proxy_settings_obj(self):
231 proxy_settings = ProxySettings(host='foo', port=1234)
233 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
234 project_name='hello', proxy_settings=proxy_settings)
235 self.assertEqual('foo', os_creds.username)
236 self.assertEqual('bar', os_creds.password)
237 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
238 self.assertEqual('hello', os_creds.project_name)
239 self.assertEqual(2, os_creds.identity_api_version)
240 self.assertEqual(2, os_creds.image_api_version)
241 self.assertEqual(2, os_creds.compute_api_version)
242 self.assertEqual(1, os_creds.heat_api_version)
243 self.assertEqual('default', os_creds.user_domain_id)
244 self.assertEqual('default', os_creds.project_domain_id)
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)
254 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
255 'auth_url': 'http://foo.bar:5000/v2',
256 'project_name': 'hello',
257 'proxy_settings': proxy_settings,
258 'region_name': 'test_region'})
259 self.assertEqual('foo', os_creds.username)
260 self.assertEqual('bar', os_creds.password)
261 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
262 self.assertEqual('hello', os_creds.project_name)
263 self.assertEqual(2, os_creds.identity_api_version)
264 self.assertEqual(2, os_creds.image_api_version)
265 self.assertEqual(2, os_creds.compute_api_version)
266 self.assertEqual(1, os_creds.heat_api_version)
267 self.assertEqual('default', os_creds.user_domain_id)
268 self.assertEqual('default', os_creds.project_domain_id)
269 self.assertEqual('admin', os_creds.interface)
270 self.assertFalse(os_creds.cacert)
271 self.assertEqual('foo', os_creds.proxy_settings.host)
272 self.assertEqual(1234, os_creds.proxy_settings.port)
273 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
274 self.assertEqual('test_region', os_creds.region_name)
276 def test_proxy_settings_dict(self):
278 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
279 project_name='hello', proxy_settings={'host': 'foo', 'port': 1234})
280 self.assertEqual('foo', os_creds.username)
281 self.assertEqual('bar', os_creds.password)
282 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
283 self.assertEqual('hello', os_creds.project_name)
284 self.assertEqual(2, os_creds.identity_api_version)
285 self.assertEqual(2, os_creds.image_api_version)
286 self.assertEqual(2, os_creds.compute_api_version)
287 self.assertEqual(1, os_creds.heat_api_version)
288 self.assertEqual('default', os_creds.user_domain_id)
289 self.assertEqual('default', os_creds.project_domain_id)
290 self.assertEqual('admin', os_creds.interface)
291 self.assertFalse(os_creds.cacert)
292 self.assertEqual('foo', os_creds.proxy_settings.host)
293 self.assertEqual(1234, os_creds.proxy_settings.port)
294 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
296 def test_proxy_settings_dict_kwargs(self):
297 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
298 'auth_url': 'http://foo.bar:5000/v2',
299 'project_name': 'hello',
300 'proxy_settings': {'host': 'foo', 'port': 1234},
301 'region_name': 'test_region'})
302 self.assertEqual('foo', os_creds.username)
303 self.assertEqual('bar', os_creds.password)
304 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
305 self.assertEqual('hello', os_creds.project_name)
306 self.assertEqual(2, os_creds.identity_api_version)
307 self.assertEqual(2, os_creds.image_api_version)
308 self.assertEqual(2, os_creds.compute_api_version)
309 self.assertEqual(1, os_creds.heat_api_version)
310 self.assertEqual('default', os_creds.user_domain_id)
311 self.assertEqual('default', os_creds.project_domain_id)
312 self.assertEqual('admin', os_creds.interface)
313 self.assertFalse(os_creds.cacert)
314 self.assertEqual('foo', os_creds.proxy_settings.host)
315 self.assertEqual(1234, os_creds.proxy_settings.port)
316 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
317 self.assertEqual('test_region', os_creds.region_name)