4a2ce3d848bd2d9034b7d24f58b372f44de61b32
[snaps.git] / snaps / openstack / tests / conf / os_credentials_tests.py
1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 #                    and others.  All rights reserved.
3 #
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:
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
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.
15
16 import logging
17 import unittest
18
19 from snaps.openstack.os_credentials import OSCredsError, OSCreds, \
20     ProxySettings, ProxySettingsError
21
22 __author__ = 'spisarski'
23
24 logger = logging.getLogger('os_credentials_test')
25
26
27 class ProxySettingsUnitTests(unittest.TestCase):
28     """
29     Tests the construction of the ProxySettings class
30     """
31
32     def test_no_params(self):
33         with self.assertRaises(ProxySettingsError):
34             ProxySettings()
35
36     def test_empty_kwargs(self):
37         with self.assertRaises(ProxySettingsError):
38             ProxySettings(**dict())
39
40     def test_host_only(self):
41         with self.assertRaises(ProxySettingsError):
42             ProxySettings(host='foo')
43
44     def test_host_only_kwargs(self):
45         with self.assertRaises(ProxySettingsError):
46             ProxySettings(**{'host': 'foo'})
47
48     def test_port_only(self):
49         with self.assertRaises(ProxySettingsError):
50             ProxySettings(port=1234)
51
52     def test_port_only_kwargs(self):
53         with self.assertRaises(ProxySettingsError):
54             ProxySettings(**{'port': 1234})
55
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)
63
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)
71
72     def test_all(self):
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)
81
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)
91
92
93 class OSCredsUnitTests(unittest.TestCase):
94     """
95     Tests the construction of the OSCreds class
96     """
97
98     def test_no_params(self):
99         with self.assertRaises(OSCredsError):
100             OSCreds()
101
102     def test_empty_kwargs(self):
103         with self.assertRaises(OSCredsError):
104             OSCreds(**dict())
105
106     def test_username_only(self):
107         with self.assertRaises(OSCredsError):
108             OSCreds(username='foo')
109
110     def test_username_only_kwargs(self):
111         with self.assertRaises(OSCredsError):
112             OSCreds(**{'username': 'foo'})
113
114     def test_password_only(self):
115         with self.assertRaises(OSCredsError):
116             OSCreds(password='foo')
117
118     def test_password_only_kwargs(self):
119         with self.assertRaises(OSCredsError):
120             OSCreds(**{'password': 'foo'})
121
122     def test_auth_url_only(self):
123         with self.assertRaises(OSCredsError):
124             OSCreds(auth_url='foo')
125
126     def test_auth_url_only_kwargs(self):
127         with self.assertRaises(OSCredsError):
128             OSCreds(**{'auth_url': 'foo'})
129
130     def test_project_name_only(self):
131         with self.assertRaises(OSCredsError):
132             OSCreds(project_name='foo')
133
134     def test_project_name_only_kwargs(self):
135         with self.assertRaises(OSCredsError):
136             OSCreds(**{'project_name': 'foo'})
137
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')
142
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'})
147
148     def test_minimal(self):
149         os_creds = OSCreds(
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)
166
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)
185
186     def test_all_kwargs_versions_str(self):
187         os_creds = OSCreds(
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)
207
208     def test_all_kwargs_versions_num(self):
209         os_creds = OSCreds(
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)
229
230     def test_proxy_settings_obj(self):
231         proxy_settings = ProxySettings(host='foo', port=1234)
232         os_creds = OSCreds(
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)
251
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)
275
276     def test_proxy_settings_dict(self):
277         os_creds = OSCreds(
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)
295
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)