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.assertTrue(os_creds.cacert)
164 self.assertIsNone(os_creds.proxy_settings)
166 def test_minimal_kwargs(self):
167 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
168 'auth_url': 'http://foo.bar:5000/v2',
169 'project_name': 'hello'})
170 self.assertEqual('foo', os_creds.username)
171 self.assertEqual('bar', os_creds.password)
172 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
173 self.assertEqual('hello', os_creds.project_name)
174 self.assertEqual(2, os_creds.identity_api_version)
175 self.assertEqual(2, os_creds.image_api_version)
176 self.assertEqual(2, os_creds.compute_api_version)
177 self.assertEqual(1, os_creds.heat_api_version)
178 self.assertEqual('default', os_creds.user_domain_id)
179 self.assertEqual('default', os_creds.project_domain_id)
180 self.assertEqual('admin', os_creds.interface)
181 self.assertTrue(os_creds.cacert)
182 self.assertIsNone(os_creds.proxy_settings)
184 def test_all_kwargs_versions_str(self):
186 **{'username': 'foo', 'password': 'bar',
187 'auth_url': 'http://foo.bar:5000/v2', 'project_name': 'hello',
188 'identity_api_version': '5', 'image_api_version': '6',
189 'compute_api_version': '7', 'heat_api_version': '8.0'})
190 self.assertEqual('foo', os_creds.username)
191 self.assertEqual('bar', os_creds.password)
192 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
193 self.assertEqual('hello', os_creds.project_name)
194 self.assertEqual(5, os_creds.identity_api_version)
195 self.assertEqual(6, os_creds.image_api_version)
196 self.assertEqual(7, os_creds.compute_api_version)
197 self.assertEqual(8.0, os_creds.heat_api_version)
198 self.assertEqual('default', os_creds.user_domain_id)
199 self.assertEqual('default', os_creds.project_domain_id)
200 self.assertEqual('admin', os_creds.interface)
201 self.assertTrue(os_creds.cacert)
202 self.assertIsNone(os_creds.proxy_settings)
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 self.assertEqual('foo', os_creds.username)
211 self.assertEqual('bar', os_creds.password)
212 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
213 self.assertEqual('hello', os_creds.project_name)
214 self.assertEqual(5, os_creds.identity_api_version)
215 self.assertEqual(6, os_creds.image_api_version)
216 self.assertEqual(7, os_creds.compute_api_version)
217 self.assertEqual(8.0, os_creds.heat_api_version)
218 self.assertEqual('default', os_creds.user_domain_id)
219 self.assertEqual('default', os_creds.project_domain_id)
220 self.assertEqual('admin', os_creds.interface)
221 self.assertTrue(os_creds.cacert)
222 self.assertIsNone(os_creds.proxy_settings)
224 def test_proxy_settings_obj(self):
225 proxy_settings = ProxySettings(host='foo', port=1234)
227 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
228 project_name='hello', proxy_settings=proxy_settings)
229 self.assertEqual('foo', os_creds.username)
230 self.assertEqual('bar', os_creds.password)
231 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
232 self.assertEqual('hello', os_creds.project_name)
233 self.assertEqual(2, os_creds.identity_api_version)
234 self.assertEqual(2, os_creds.image_api_version)
235 self.assertEqual(2, os_creds.compute_api_version)
236 self.assertEqual(1, os_creds.heat_api_version)
237 self.assertEqual('default', os_creds.user_domain_id)
238 self.assertEqual('default', os_creds.project_domain_id)
239 self.assertEqual('admin', os_creds.interface)
240 self.assertTrue(os_creds.cacert)
241 self.assertEqual('foo', os_creds.proxy_settings.host)
242 self.assertEqual(1234, os_creds.proxy_settings.port)
243 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
245 def test_proxy_settings_obj_kwargs(self):
246 proxy_settings = ProxySettings(host='foo', port=1234)
247 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
248 'auth_url': 'http://foo.bar:5000/v2',
249 'project_name': 'hello',
250 'proxy_settings': proxy_settings})
251 self.assertEqual('foo', os_creds.username)
252 self.assertEqual('bar', os_creds.password)
253 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
254 self.assertEqual('hello', os_creds.project_name)
255 self.assertEqual(2, os_creds.identity_api_version)
256 self.assertEqual(2, os_creds.image_api_version)
257 self.assertEqual(2, os_creds.compute_api_version)
258 self.assertEqual(1, os_creds.heat_api_version)
259 self.assertEqual('default', os_creds.user_domain_id)
260 self.assertEqual('default', os_creds.project_domain_id)
261 self.assertEqual('admin', os_creds.interface)
262 self.assertTrue(os_creds.cacert)
263 self.assertEqual('foo', os_creds.proxy_settings.host)
264 self.assertEqual(1234, os_creds.proxy_settings.port)
265 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
267 def test_proxy_settings_dict(self):
269 username='foo', password='bar', auth_url='http://foo.bar:5000/v2',
270 project_name='hello', proxy_settings={'host': 'foo', 'port': 1234})
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('default', os_creds.user_domain_id)
280 self.assertEqual('default', os_creds.project_domain_id)
281 self.assertEqual('admin', os_creds.interface)
282 self.assertTrue(os_creds.cacert)
283 self.assertEqual('foo', os_creds.proxy_settings.host)
284 self.assertEqual(1234, os_creds.proxy_settings.port)
285 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)
287 def test_proxy_settings_dict_kwargs(self):
288 os_creds = OSCreds(**{'username': 'foo', 'password': 'bar',
289 'auth_url': 'http://foo.bar:5000/v2',
290 'project_name': 'hello',
291 'proxy_settings': {'host': 'foo', 'port': 1234}})
292 self.assertEqual('foo', os_creds.username)
293 self.assertEqual('bar', os_creds.password)
294 self.assertEqual('http://foo.bar:5000/v2', os_creds.auth_url)
295 self.assertEqual('hello', os_creds.project_name)
296 self.assertEqual(2, os_creds.identity_api_version)
297 self.assertEqual(2, os_creds.image_api_version)
298 self.assertEqual(2, os_creds.compute_api_version)
299 self.assertEqual(1, os_creds.heat_api_version)
300 self.assertEqual('default', os_creds.user_domain_id)
301 self.assertEqual('default', os_creds.project_domain_id)
302 self.assertEqual('admin', os_creds.interface)
303 self.assertTrue(os_creds.cacert)
304 self.assertEqual('foo', os_creds.proxy_settings.host)
305 self.assertEqual(1234, os_creds.proxy_settings.port)
306 self.assertIsNone(os_creds.proxy_settings.ssh_proxy_cmd)