blob: bbc3d152d97db75088fa245417fc24fc4f0c0380 [file] [log] [blame]
Matthew Treinishcb058062014-03-13 18:27:07 -04001# Copyright 2014 IBM Corp.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15import keystoneclient.v2_0.client as keystoneclient
Matthew Treinish5c660ab2014-05-18 21:14:36 -040016import mock
Matthew Treinishcb058062014-03-13 18:27:07 -040017import neutronclient.v2_0.client as neutronclient
18from oslo.config import cfg
19
Andrea Frittoli422fbdf2014-03-20 10:05:18 +000020from tempest import clients
Andrea Frittoli2095d242014-03-20 08:36:23 +000021from tempest.common import http
Matthew Treinishcb058062014-03-13 18:27:07 -040022from tempest.common import isolated_creds
23from tempest import config
Matthew Treinish23433a02014-03-17 16:43:50 -040024from tempest import exceptions
Matthew Treinishcb058062014-03-13 18:27:07 -040025from tempest.openstack.common.fixture import mockpatch
26from tempest.services.identity.json import identity_client as json_iden_client
27from tempest.services.identity.xml import identity_client as xml_iden_client
28from tempest.services.network.json import network_client as json_network_client
29from tempest.services.network.xml import network_client as xml_network_client
30from tempest.tests import base
31from tempest.tests import fake_config
Andrea Frittoli2095d242014-03-20 08:36:23 +000032from tempest.tests import fake_http
33from tempest.tests import fake_identity
Matthew Treinishcb058062014-03-13 18:27:07 -040034
35
36class TestTenantIsolation(base.TestCase):
37
38 def setUp(self):
39 super(TestTenantIsolation, self).setUp()
40 self.useFixture(fake_config.ConfigFixture())
41 self.stubs.Set(config, 'TempestConfigPrivate', fake_config.FakePrivate)
Andrea Frittoli2095d242014-03-20 08:36:23 +000042 self.fake_http = fake_http.fake_httplib2(return_type=200)
43 self.stubs.Set(http.ClosingHttp, 'request',
44 fake_identity._fake_v2_response)
Andrey Pavlovaf1fb702014-05-29 17:08:10 +040045 cfg.CONF.set_default('operator_role', 'FakeRole',
46 group='object-storage')
Matthew Treinishcb058062014-03-13 18:27:07 -040047
48 def test_tempest_client(self):
49 iso_creds = isolated_creds.IsolatedCreds('test class')
50 self.assertTrue(isinstance(iso_creds.identity_admin_client,
51 json_iden_client.IdentityClientJSON))
52 self.assertTrue(isinstance(iso_creds.network_admin_client,
53 json_network_client.NetworkClientJSON))
54
55 def test_official_client(self):
56 self.useFixture(mockpatch.PatchObject(keystoneclient.Client,
57 'authenticate'))
Andrea Frittoli422fbdf2014-03-20 10:05:18 +000058 self.useFixture(mockpatch.PatchObject(clients.OfficialClientManager,
59 '_get_image_client'))
60 self.useFixture(mockpatch.PatchObject(clients.OfficialClientManager,
61 '_get_object_storage_client'))
62 self.useFixture(mockpatch.PatchObject(clients.OfficialClientManager,
63 '_get_orchestration_client'))
Artur Svechnikovc3bf9252014-05-05 16:37:37 +040064 self.useFixture(mockpatch.PatchObject(clients.OfficialClientManager,
65 '_get_ceilometer_client'))
Matthew Treinishcb058062014-03-13 18:27:07 -040066 iso_creds = isolated_creds.IsolatedCreds('test class',
67 tempest_client=False)
68 self.assertTrue(isinstance(iso_creds.identity_admin_client,
69 keystoneclient.Client))
70 self.assertTrue(isinstance(iso_creds.network_admin_client,
71 neutronclient.Client))
72
73 def test_tempest_client_xml(self):
74 iso_creds = isolated_creds.IsolatedCreds('test class', interface='xml')
75 self.assertEqual(iso_creds.interface, 'xml')
76 self.assertTrue(isinstance(iso_creds.identity_admin_client,
77 xml_iden_client.IdentityClientXML))
78 self.assertTrue(isinstance(iso_creds.network_admin_client,
79 xml_network_client.NetworkClientXML))
80
81 def _mock_user_create(self, id, name):
82 user_fix = self.useFixture(mockpatch.PatchObject(
83 json_iden_client.IdentityClientJSON,
84 'create_user',
85 return_value=({'status': 200},
86 {'id': id, 'name': name})))
87 return user_fix
88
89 def _mock_tenant_create(self, id, name):
90 tenant_fix = self.useFixture(mockpatch.PatchObject(
91 json_iden_client.IdentityClientJSON,
92 'create_tenant',
93 return_value=({'status': 200},
94 {'id': id, 'name': name})))
95 return tenant_fix
96
Andrey Pavlovaf1fb702014-05-29 17:08:10 +040097 def _mock_list_roles(self, id, name):
98 roles_fix = self.useFixture(mockpatch.PatchObject(
99 json_iden_client.IdentityClientJSON,
100 'list_roles',
101 return_value=({'status': 200},
102 [{'id': id, 'name': name},
103 {'id': '1', 'name': 'FakeRole'}])))
104 return roles_fix
105
106 def _mock_assign_user_role(self):
107 tenant_fix = self.useFixture(mockpatch.PatchObject(
108 json_iden_client.IdentityClientJSON,
109 'assign_user_role',
110 return_value=({'status': 200},
111 {})))
112 return tenant_fix
113
114 def _mock_list_role(self):
115 roles_fix = self.useFixture(mockpatch.PatchObject(
116 json_iden_client.IdentityClientJSON,
117 'list_roles',
118 return_value=({'status': 200},
119 [{'id': '1', 'name': 'FakeRole'}])))
120 return roles_fix
121
Matthew Treinishe6723262014-03-14 13:16:52 -0400122 def _mock_network_create(self, iso_creds, id, name):
123 net_fix = self.useFixture(mockpatch.PatchObject(
124 iso_creds.network_admin_client,
125 'create_network',
126 return_value=({'status': 200},
127 {'network': {'id': id, 'name': name}})))
128 return net_fix
129
130 def _mock_subnet_create(self, iso_creds, id, name):
131 subnet_fix = self.useFixture(mockpatch.PatchObject(
132 iso_creds.network_admin_client,
133 'create_subnet',
134 return_value=({'status': 200},
135 {'subnet': {'id': id, 'name': name}})))
136 return subnet_fix
137
138 def _mock_router_create(self, id, name):
139 router_fix = self.useFixture(mockpatch.PatchObject(
140 json_network_client.NetworkClientJSON,
141 'create_router',
142 return_value=({'status': 200},
143 {'router': {'id': id, 'name': name}})))
144 return router_fix
145
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400146 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinishcb058062014-03-13 18:27:07 -0400147 def test_primary_creds(self, MockRestClient):
148 cfg.CONF.set_default('neutron', False, 'service_available')
149 iso_creds = isolated_creds.IsolatedCreds('test class',
150 password='fake_password')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400151 self._mock_assign_user_role()
152 self._mock_list_role()
Matthew Treinishcb058062014-03-13 18:27:07 -0400153 self._mock_tenant_create('1234', 'fake_prim_tenant')
154 self._mock_user_create('1234', 'fake_prim_user')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000155 primary_creds = iso_creds.get_primary_creds()
Andrea Frittolifc315902014-03-20 09:21:44 +0000156 self.assertEqual(primary_creds.username, 'fake_prim_user')
157 self.assertEqual(primary_creds.tenant_name, 'fake_prim_tenant')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000158 # Verify IDs
159 self.assertEqual(primary_creds.tenant_id, '1234')
160 self.assertEqual(primary_creds.user_id, '1234')
Matthew Treinishcb058062014-03-13 18:27:07 -0400161
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400162 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinishcb058062014-03-13 18:27:07 -0400163 def test_admin_creds(self, MockRestClient):
164 cfg.CONF.set_default('neutron', False, 'service_available')
165 iso_creds = isolated_creds.IsolatedCreds('test class',
166 password='fake_password')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400167 self._mock_list_roles('1234', 'admin')
Matthew Treinishcb058062014-03-13 18:27:07 -0400168 self._mock_user_create('1234', 'fake_admin_user')
169 self._mock_tenant_create('1234', 'fake_admin_tenant')
Matthew Treinishcb058062014-03-13 18:27:07 -0400170
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400171 user_mock = mock.patch.object(json_iden_client.IdentityClientJSON,
172 'assign_user_role')
Matthew Treinishcb058062014-03-13 18:27:07 -0400173 user_mock.start()
174 self.addCleanup(user_mock.stop)
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400175 with mock.patch.object(json_iden_client.IdentityClientJSON,
176 'assign_user_role') as user_mock:
Andrea Frittoli422fbdf2014-03-20 10:05:18 +0000177 admin_creds = iso_creds.get_admin_creds()
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400178 user_mock.assert_has_calls([
179 mock.call('1234', '1234', '1'),
180 mock.call('1234', '1234', '1234')])
Andrea Frittolifc315902014-03-20 09:21:44 +0000181 self.assertEqual(admin_creds.username, 'fake_admin_user')
182 self.assertEqual(admin_creds.tenant_name, 'fake_admin_tenant')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000183 # Verify IDs
184 self.assertEqual(admin_creds.tenant_id, '1234')
185 self.assertEqual(admin_creds.user_id, '1234')
Matthew Treinishcb058062014-03-13 18:27:07 -0400186
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400187 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinishcb058062014-03-13 18:27:07 -0400188 def test_all_cred_cleanup(self, MockRestClient):
189 cfg.CONF.set_default('neutron', False, 'service_available')
190 iso_creds = isolated_creds.IsolatedCreds('test class',
191 password='fake_password')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400192 self._mock_assign_user_role()
193 roles_fix = self._mock_list_role()
Matthew Treinishcb058062014-03-13 18:27:07 -0400194 tenant_fix = self._mock_tenant_create('1234', 'fake_prim_tenant')
195 user_fix = self._mock_user_create('1234', 'fake_prim_user')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000196 iso_creds.get_primary_creds()
Matthew Treinishcb058062014-03-13 18:27:07 -0400197 tenant_fix.cleanUp()
198 user_fix.cleanUp()
199 tenant_fix = self._mock_tenant_create('12345', 'fake_alt_tenant')
200 user_fix = self._mock_user_create('12345', 'fake_alt_user')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000201 iso_creds.get_alt_creds()
Matthew Treinishcb058062014-03-13 18:27:07 -0400202 tenant_fix.cleanUp()
203 user_fix.cleanUp()
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400204 roles_fix.cleanUp()
Matthew Treinishcb058062014-03-13 18:27:07 -0400205 tenant_fix = self._mock_tenant_create('123456', 'fake_admin_tenant')
206 user_fix = self._mock_user_create('123456', 'fake_admin_user')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400207 self._mock_list_roles('123456', 'admin')
208 iso_creds.get_admin_creds()
Matthew Treinishcb058062014-03-13 18:27:07 -0400209 user_mock = self.patch(
210 'tempest.services.identity.json.identity_client.'
211 'IdentityClientJSON.delete_user')
212 tenant_mock = self.patch(
213 'tempest.services.identity.json.identity_client.'
214 'IdentityClientJSON.delete_tenant')
215 iso_creds.clear_isolated_creds()
216 # Verify user delete calls
217 calls = user_mock.mock_calls
218 self.assertEqual(len(calls), 3)
219 args = map(lambda x: x[1][0], calls)
220 self.assertIn('1234', args)
221 self.assertIn('12345', args)
222 self.assertIn('123456', args)
223 # Verify tenant delete calls
224 calls = tenant_mock.mock_calls
225 self.assertEqual(len(calls), 3)
226 args = map(lambda x: x[1][0], calls)
227 self.assertIn('1234', args)
228 self.assertIn('12345', args)
229 self.assertIn('123456', args)
Matthew Treinishe6723262014-03-14 13:16:52 -0400230
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400231 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinishe6723262014-03-14 13:16:52 -0400232 def test_alt_creds(self, MockRestClient):
233 cfg.CONF.set_default('neutron', False, 'service_available')
234 iso_creds = isolated_creds.IsolatedCreds('test class',
235 password='fake_password')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400236 self._mock_assign_user_role()
237 self._mock_list_role()
Matthew Treinishe6723262014-03-14 13:16:52 -0400238 self._mock_user_create('1234', 'fake_alt_user')
239 self._mock_tenant_create('1234', 'fake_alt_tenant')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000240 alt_creds = iso_creds.get_alt_creds()
Andrea Frittolifc315902014-03-20 09:21:44 +0000241 self.assertEqual(alt_creds.username, 'fake_alt_user')
242 self.assertEqual(alt_creds.tenant_name, 'fake_alt_tenant')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000243 # Verify IDs
244 self.assertEqual(alt_creds.tenant_id, '1234')
245 self.assertEqual(alt_creds.user_id, '1234')
Matthew Treinishe6723262014-03-14 13:16:52 -0400246
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400247 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinishe6723262014-03-14 13:16:52 -0400248 def test_network_creation(self, MockRestClient):
249 iso_creds = isolated_creds.IsolatedCreds('test class',
250 password='fake_password')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400251 self._mock_assign_user_role()
252 self._mock_list_role()
Matthew Treinishe6723262014-03-14 13:16:52 -0400253 self._mock_user_create('1234', 'fake_prim_user')
254 self._mock_tenant_create('1234', 'fake_prim_tenant')
255 self._mock_network_create(iso_creds, '1234', 'fake_net')
256 self._mock_subnet_create(iso_creds, '1234', 'fake_subnet')
257 self._mock_router_create('1234', 'fake_router')
258 router_interface_mock = self.patch(
259 'tempest.services.network.json.network_client.NetworkClientJSON.'
260 'add_router_interface_with_subnet_id')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000261 iso_creds.get_primary_creds()
Matthew Treinishe6723262014-03-14 13:16:52 -0400262 router_interface_mock.called_once_with('1234', '1234')
263 network = iso_creds.get_primary_network()
264 subnet = iso_creds.get_primary_subnet()
265 router = iso_creds.get_primary_router()
266 self.assertEqual(network['id'], '1234')
267 self.assertEqual(network['name'], 'fake_net')
268 self.assertEqual(subnet['id'], '1234')
269 self.assertEqual(subnet['name'], 'fake_subnet')
270 self.assertEqual(router['id'], '1234')
271 self.assertEqual(router['name'], 'fake_router')
272
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400273 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinishe6723262014-03-14 13:16:52 -0400274 def test_network_cleanup(self, MockRestClient):
275 iso_creds = isolated_creds.IsolatedCreds('test class',
276 password='fake_password')
277 # Create primary tenant and network
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400278 self._mock_assign_user_role()
279 roles_fix = self._mock_list_role()
Matthew Treinishe6723262014-03-14 13:16:52 -0400280 user_fix = self._mock_user_create('1234', 'fake_prim_user')
281 tenant_fix = self._mock_tenant_create('1234', 'fake_prim_tenant')
282 net_fix = self._mock_network_create(iso_creds, '1234', 'fake_net')
283 subnet_fix = self._mock_subnet_create(iso_creds, '1234', 'fake_subnet')
284 router_fix = self._mock_router_create('1234', 'fake_router')
285 router_interface_mock = self.patch(
286 'tempest.services.network.json.network_client.NetworkClientJSON.'
287 'add_router_interface_with_subnet_id')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000288 iso_creds.get_primary_creds()
Matthew Treinishe6723262014-03-14 13:16:52 -0400289 router_interface_mock.called_once_with('1234', '1234')
290 router_interface_mock.reset_mock()
291 tenant_fix.cleanUp()
292 user_fix.cleanUp()
293 net_fix.cleanUp()
294 subnet_fix.cleanUp()
295 router_fix.cleanUp()
296 # Create alternate tenant and network
297 user_fix = self._mock_user_create('12345', 'fake_alt_user')
298 tenant_fix = self._mock_tenant_create('12345', 'fake_alt_tenant')
299 net_fix = self._mock_network_create(iso_creds, '12345', 'fake_alt_net')
300 subnet_fix = self._mock_subnet_create(iso_creds, '12345',
301 'fake_alt_subnet')
302 router_fix = self._mock_router_create('12345', 'fake_alt_router')
Andrea Frittoli9612e812014-03-13 10:57:26 +0000303 iso_creds.get_alt_creds()
Matthew Treinishe6723262014-03-14 13:16:52 -0400304 router_interface_mock.called_once_with('12345', '12345')
305 router_interface_mock.reset_mock()
306 tenant_fix.cleanUp()
307 user_fix.cleanUp()
308 net_fix.cleanUp()
309 subnet_fix.cleanUp()
310 router_fix.cleanUp()
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400311 roles_fix.cleanUp()
Matthew Treinishe6723262014-03-14 13:16:52 -0400312 # Create admin tenant and networks
313 user_fix = self._mock_user_create('123456', 'fake_admin_user')
314 tenant_fix = self._mock_tenant_create('123456', 'fake_admin_tenant')
315 net_fix = self._mock_network_create(iso_creds, '123456',
316 'fake_admin_net')
317 subnet_fix = self._mock_subnet_create(iso_creds, '123456',
318 'fake_admin_subnet')
319 router_fix = self._mock_router_create('123456', 'fake_admin_router')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400320 self._mock_list_roles('123456', 'admin')
321 iso_creds.get_admin_creds()
Matthew Treinishe6723262014-03-14 13:16:52 -0400322 self.patch('tempest.services.identity.json.identity_client.'
323 'IdentityClientJSON.delete_user')
324 self.patch('tempest.services.identity.json.identity_client.'
325 'IdentityClientJSON.delete_tenant')
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400326 net = mock.patch.object(iso_creds.network_admin_client,
327 'delete_network')
Matthew Treinishe6723262014-03-14 13:16:52 -0400328 net_mock = net.start()
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400329 subnet = mock.patch.object(iso_creds.network_admin_client,
330 'delete_subnet')
Matthew Treinishe6723262014-03-14 13:16:52 -0400331 subnet_mock = subnet.start()
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400332 router = mock.patch.object(iso_creds.network_admin_client,
333 'delete_router')
Matthew Treinishe6723262014-03-14 13:16:52 -0400334 router_mock = router.start()
335 remove_router_interface_mock = self.patch(
336 'tempest.services.network.json.network_client.NetworkClientJSON.'
337 'remove_router_interface_with_subnet_id')
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400338 port_list_mock = mock.patch.object(iso_creds.network_admin_client,
339 'list_ports', return_value=(
340 {'status': 200}, {'ports': []}))
Matthew Treinishe6723262014-03-14 13:16:52 -0400341 port_list_mock.start()
342 iso_creds.clear_isolated_creds()
343 # Verify remove router interface calls
344 calls = remove_router_interface_mock.mock_calls
345 self.assertEqual(len(calls), 3)
346 args = map(lambda x: x[1], calls)
347 self.assertIn(('1234', '1234'), args)
348 self.assertIn(('12345', '12345'), args)
349 self.assertIn(('123456', '123456'), args)
350 # Verify network delete calls
351 calls = net_mock.mock_calls
352 self.assertEqual(len(calls), 3)
353 args = map(lambda x: x[1][0], calls)
354 self.assertIn('1234', args)
355 self.assertIn('12345', args)
356 self.assertIn('123456', args)
357 # Verify subnet delete calls
358 calls = subnet_mock.mock_calls
359 self.assertEqual(len(calls), 3)
360 args = map(lambda x: x[1][0], calls)
361 self.assertIn('1234', args)
362 self.assertIn('12345', args)
363 self.assertIn('123456', args)
364 # Verify router delete calls
365 calls = router_mock.mock_calls
366 self.assertEqual(len(calls), 3)
367 args = map(lambda x: x[1][0], calls)
368 self.assertIn('1234', args)
369 self.assertIn('12345', args)
370 self.assertIn('123456', args)
Matthew Treinish23433a02014-03-17 16:43:50 -0400371
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400372 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinish23433a02014-03-17 16:43:50 -0400373 def test_network_alt_creation(self, MockRestClient):
374 iso_creds = isolated_creds.IsolatedCreds('test class',
375 password='fake_password')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400376 self._mock_assign_user_role()
377 self._mock_list_role()
Matthew Treinish23433a02014-03-17 16:43:50 -0400378 self._mock_user_create('1234', 'fake_alt_user')
379 self._mock_tenant_create('1234', 'fake_alt_tenant')
380 self._mock_network_create(iso_creds, '1234', 'fake_alt_net')
381 self._mock_subnet_create(iso_creds, '1234', 'fake_alt_subnet')
382 self._mock_router_create('1234', 'fake_alt_router')
383 router_interface_mock = self.patch(
384 'tempest.services.network.json.network_client.NetworkClientJSON.'
385 'add_router_interface_with_subnet_id')
Andrea Frittoli422fbdf2014-03-20 10:05:18 +0000386 iso_creds.get_alt_creds()
Matthew Treinish23433a02014-03-17 16:43:50 -0400387 router_interface_mock.called_once_with('1234', '1234')
388 network = iso_creds.get_alt_network()
389 subnet = iso_creds.get_alt_subnet()
390 router = iso_creds.get_alt_router()
391 self.assertEqual(network['id'], '1234')
392 self.assertEqual(network['name'], 'fake_alt_net')
393 self.assertEqual(subnet['id'], '1234')
394 self.assertEqual(subnet['name'], 'fake_alt_subnet')
395 self.assertEqual(router['id'], '1234')
396 self.assertEqual(router['name'], 'fake_alt_router')
397
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400398 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinish23433a02014-03-17 16:43:50 -0400399 def test_network_admin_creation(self, MockRestClient):
400 iso_creds = isolated_creds.IsolatedCreds('test class',
401 password='fake_password')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400402 self._mock_assign_user_role()
Matthew Treinish23433a02014-03-17 16:43:50 -0400403 self._mock_user_create('1234', 'fake_admin_user')
404 self._mock_tenant_create('1234', 'fake_admin_tenant')
405 self._mock_network_create(iso_creds, '1234', 'fake_admin_net')
406 self._mock_subnet_create(iso_creds, '1234', 'fake_admin_subnet')
407 self._mock_router_create('1234', 'fake_admin_router')
408 router_interface_mock = self.patch(
409 'tempest.services.network.json.network_client.NetworkClientJSON.'
410 'add_router_interface_with_subnet_id')
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400411 self._mock_list_roles('123456', 'admin')
412 iso_creds.get_admin_creds()
Matthew Treinish23433a02014-03-17 16:43:50 -0400413 router_interface_mock.called_once_with('1234', '1234')
414 network = iso_creds.get_admin_network()
415 subnet = iso_creds.get_admin_subnet()
416 router = iso_creds.get_admin_router()
417 self.assertEqual(network['id'], '1234')
418 self.assertEqual(network['name'], 'fake_admin_net')
419 self.assertEqual(subnet['id'], '1234')
420 self.assertEqual(subnet['name'], 'fake_admin_subnet')
421 self.assertEqual(router['id'], '1234')
422 self.assertEqual(router['name'], 'fake_admin_router')
423
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400424 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinish23433a02014-03-17 16:43:50 -0400425 def test_no_network_resources(self, MockRestClient):
426 net_dict = {
427 'network': False,
428 'router': False,
429 'subnet': False,
430 'dhcp': False,
431 }
432 iso_creds = isolated_creds.IsolatedCreds('test class',
433 password='fake_password',
434 network_resources=net_dict)
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400435 self._mock_assign_user_role()
436 self._mock_list_role()
Matthew Treinish23433a02014-03-17 16:43:50 -0400437 self._mock_user_create('1234', 'fake_prim_user')
438 self._mock_tenant_create('1234', 'fake_prim_tenant')
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400439 net = mock.patch.object(iso_creds.network_admin_client,
440 'delete_network')
Matthew Treinish23433a02014-03-17 16:43:50 -0400441 net_mock = net.start()
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400442 subnet = mock.patch.object(iso_creds.network_admin_client,
443 'delete_subnet')
Matthew Treinish23433a02014-03-17 16:43:50 -0400444 subnet_mock = subnet.start()
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400445 router = mock.patch.object(iso_creds.network_admin_client,
446 'delete_router')
Matthew Treinish23433a02014-03-17 16:43:50 -0400447 router_mock = router.start()
448
Andrea Frittoli422fbdf2014-03-20 10:05:18 +0000449 iso_creds.get_primary_creds()
Matthew Treinish23433a02014-03-17 16:43:50 -0400450 self.assertEqual(net_mock.mock_calls, [])
451 self.assertEqual(subnet_mock.mock_calls, [])
452 self.assertEqual(router_mock.mock_calls, [])
453 network = iso_creds.get_primary_network()
454 subnet = iso_creds.get_primary_subnet()
455 router = iso_creds.get_primary_router()
456 self.assertIsNone(network)
457 self.assertIsNone(subnet)
458 self.assertIsNone(router)
459
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400460 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinish23433a02014-03-17 16:43:50 -0400461 def test_router_without_network(self, MockRestClient):
462 net_dict = {
463 'network': False,
464 'router': True,
465 'subnet': False,
466 'dhcp': False,
467 }
468 iso_creds = isolated_creds.IsolatedCreds('test class',
469 password='fake_password',
470 network_resources=net_dict)
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400471 self._mock_assign_user_role()
472 self._mock_list_role()
Matthew Treinish23433a02014-03-17 16:43:50 -0400473 self._mock_user_create('1234', 'fake_prim_user')
474 self._mock_tenant_create('1234', 'fake_prim_tenant')
475 self.assertRaises(exceptions.InvalidConfiguration,
476 iso_creds.get_primary_creds)
477
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400478 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinish23433a02014-03-17 16:43:50 -0400479 def test_subnet_without_network(self, MockRestClient):
480 net_dict = {
481 'network': False,
482 'router': False,
483 'subnet': True,
484 'dhcp': False,
485 }
486 iso_creds = isolated_creds.IsolatedCreds('test class',
487 password='fake_password',
488 network_resources=net_dict)
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400489 self._mock_assign_user_role()
490 self._mock_list_role()
Matthew Treinish23433a02014-03-17 16:43:50 -0400491 self._mock_user_create('1234', 'fake_prim_user')
492 self._mock_tenant_create('1234', 'fake_prim_tenant')
493 self.assertRaises(exceptions.InvalidConfiguration,
494 iso_creds.get_primary_creds)
495
Matthew Treinish5c660ab2014-05-18 21:14:36 -0400496 @mock.patch('tempest.common.rest_client.RestClient')
Matthew Treinish23433a02014-03-17 16:43:50 -0400497 def test_dhcp_without_subnet(self, MockRestClient):
498 net_dict = {
499 'network': False,
500 'router': False,
501 'subnet': False,
502 'dhcp': True,
503 }
504 iso_creds = isolated_creds.IsolatedCreds('test class',
505 password='fake_password',
506 network_resources=net_dict)
Andrey Pavlovaf1fb702014-05-29 17:08:10 +0400507 self._mock_assign_user_role()
508 self._mock_list_role()
Matthew Treinish23433a02014-03-17 16:43:50 -0400509 self._mock_user_create('1234', 'fake_prim_user')
510 self._mock_tenant_create('1234', 'fake_prim_tenant')
511 self.assertRaises(exceptions.InvalidConfiguration,
512 iso_creds.get_primary_creds)