blob: 88c28bff958f7b70270b763fc89969dc54dd970c [file] [log] [blame]
Ryan Rossiter9228bf72016-02-25 03:06:12 +00001# Copyright 2016 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
Sean McGinniseed80742020-04-18 12:01:03 -050015from unittest import mock
16
Andrea Frittoli5fdfc9b2017-08-17 12:06:04 +010017from oslo_config import cfg
Ryan Rossiter9228bf72016-02-25 03:06:12 +000018
19from tempest import clients
20from tempest.common import credentials_factory as credentials
Andrea Frittolicad70e22017-08-16 13:19:04 +010021from tempest import config
Matthew Treinishb19c55d2017-07-17 12:38:35 -040022from tempest.lib.common import fixed_network
Ryan Rossiter9228bf72016-02-25 03:06:12 +000023from tempest import test
Matthew Treinishffad78a2016-04-16 14:39:52 -040024from tempest.tests import base
Ryan Rossiter9228bf72016-02-25 03:06:12 +000025from tempest.tests import fake_config
Ryan Rossiter9228bf72016-02-25 03:06:12 +000026
27
28class TestBaseTestCase(base.TestCase):
29 def setUp(self):
30 super(TestBaseTestCase, self).setUp()
31 self.useFixture(fake_config.ConfigFixture())
Andrea Frittolicad70e22017-08-16 13:19:04 +010032 self.patchobject(config, 'TempestConfigPrivate',
33 fake_config.FakePrivate)
Ryan Rossiter9228bf72016-02-25 03:06:12 +000034 self.fixed_network_name = 'fixed-net'
Andrea Frittoli5fdfc9b2017-08-17 12:06:04 +010035 cfg.CONF.set_default('fixed_network_name', self.fixed_network_name,
36 'compute')
37 cfg.CONF.set_default('neutron', True, 'service_available')
Ryan Rossiter9228bf72016-02-25 03:06:12 +000038
39 @mock.patch.object(test.BaseTestCase, 'get_client_manager')
40 @mock.patch.object(test.BaseTestCase, '_get_credentials_provider')
41 @mock.patch.object(fixed_network, 'get_tenant_network')
42 def test_get_tenant_network(self, mock_gtn, mock_gprov, mock_gcm):
43 net_client = mock.Mock()
44 mock_prov = mock.Mock()
zhufl33289a22018-01-04 15:02:00 +080045 mock_gcm.return_value.networks_client = net_client
Ryan Rossiter9228bf72016-02-25 03:06:12 +000046 mock_gprov.return_value = mock_prov
47
48 test.BaseTestCase.get_tenant_network()
49
50 mock_gcm.assert_called_once_with(credential_type='primary')
51 mock_gprov.assert_called_once_with()
52 mock_gtn.assert_called_once_with(mock_prov, net_client,
53 self.fixed_network_name)
54
55 @mock.patch.object(test.BaseTestCase, 'get_client_manager')
56 @mock.patch.object(test.BaseTestCase, '_get_credentials_provider')
57 @mock.patch.object(fixed_network, 'get_tenant_network')
58 @mock.patch.object(test.BaseTestCase, 'get_identity_version')
59 @mock.patch.object(credentials, 'is_admin_available')
60 @mock.patch.object(clients, 'Manager')
61 def test_get_tenant_network_with_nova_net(self, mock_man, mock_iaa,
62 mock_giv, mock_gtn, mock_gcp,
63 mock_gcm):
Andrea Frittoli5fdfc9b2017-08-17 12:06:04 +010064 cfg.CONF.set_default('neutron', False, 'service_available')
Ryan Rossiter9228bf72016-02-25 03:06:12 +000065 mock_prov = mock.Mock()
66 mock_admin_man = mock.Mock()
67 mock_iaa.return_value = True
68 mock_gcp.return_value = mock_prov
69 mock_man.return_value = mock_admin_man
70
71 test.BaseTestCase.get_tenant_network()
72
73 mock_man.assert_called_once_with(
Andrea Frittoli (andreaf)848c4a12016-06-09 11:09:02 +010074 mock_prov.get_admin_creds.return_value.credentials)
Ryan Rossiter9228bf72016-02-25 03:06:12 +000075 mock_iaa.assert_called_once_with(
76 identity_version=mock_giv.return_value)
77 mock_gcp.assert_called_once_with()
78 mock_gtn.assert_called_once_with(
79 mock_prov, mock_admin_man.compute_networks_client,
80 self.fixed_network_name)
81
82 @mock.patch.object(test.BaseTestCase, 'get_client_manager')
83 @mock.patch.object(test.BaseTestCase, '_get_credentials_provider')
84 @mock.patch.object(fixed_network, 'get_tenant_network')
85 def test_get_tenant_network_with_alt_creds(self, mock_gtn, mock_gprov,
86 mock_gcm):
87 net_client = mock.Mock()
88 mock_prov = mock.Mock()
zhufl33289a22018-01-04 15:02:00 +080089 mock_gcm.return_value.networks_client = net_client
Ryan Rossiter9228bf72016-02-25 03:06:12 +000090 mock_gprov.return_value = mock_prov
91
92 test.BaseTestCase.get_tenant_network(credentials_type='alt')
93
94 mock_gcm.assert_called_once_with(credential_type='alt')
95 mock_gprov.assert_called_once_with()
96 mock_gtn.assert_called_once_with(mock_prov, net_client,
97 self.fixed_network_name)
98
99 @mock.patch.object(test.BaseTestCase, 'get_client_manager')
100 @mock.patch.object(test.BaseTestCase, '_get_credentials_provider')
101 @mock.patch.object(fixed_network, 'get_tenant_network')
102 def test_get_tenant_network_with_role_creds(self, mock_gtn, mock_gprov,
103 mock_gcm):
104 net_client = mock.Mock()
105 mock_prov = mock.Mock()
zhufl33289a22018-01-04 15:02:00 +0800106 mock_gcm.return_value.networks_client = net_client
Ryan Rossiter9228bf72016-02-25 03:06:12 +0000107 mock_gprov.return_value = mock_prov
108 creds = ['foo_type', 'role1']
109
110 test.BaseTestCase.get_tenant_network(credentials_type=creds)
111
Ghanshyam Mann2d0da042021-03-05 09:09:30 -0600112 mock_gcm.assert_called_once_with(roles=['role1'], scope='project')
Ryan Rossiter9228bf72016-02-25 03:06:12 +0000113 mock_gprov.assert_called_once_with()
114 mock_gtn.assert_called_once_with(mock_prov, net_client,
115 self.fixed_network_name)