Changes required for running CI tests (Pike pod).
[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.assertTrue(os_creds.cacert)
164         self.assertIsNone(os_creds.proxy_settings)
165
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)
183
184     def test_all_kwargs_versions_str(self):
185         os_creds = OSCreds(
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)
203
204     def test_all_kwargs_versions_num(self):
205         os_creds = OSCreds(
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)
223
224     def test_proxy_settings_obj(self):
225         proxy_settings = ProxySettings(host='foo', port=1234)
226         os_creds = OSCreds(
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)
244
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)
266
267     def test_proxy_settings_dict(self):
268         os_creds = OSCreds(
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)
286
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)