|
14 | 14 | # |
15 | 15 |
|
16 | 16 | import mock |
17 | | -import testtools |
18 | 17 |
|
19 | 18 | from mock import call |
20 | 19 | from openstackclient.common import exceptions |
@@ -1066,7 +1065,7 @@ def test_unshelve_multi_servers(self): |
1066 | 1065 | self.run_method_with_servers('unshelve', 3) |
1067 | 1066 |
|
1068 | 1067 |
|
1069 | | -class TestServerGeneral(testtools.TestCase): |
| 1068 | +class TestServerGeneral(TestServer): |
1070 | 1069 | OLD = { |
1071 | 1070 | 'private': [ |
1072 | 1071 | { |
@@ -1160,3 +1159,46 @@ def test_format_servers_list_networks(self): |
1160 | 1159 | 'actual = %s\n' % |
1161 | 1160 | (data_1, data_2, networks_format)) |
1162 | 1161 | self.assertIn(networks_format, (data_1, data_2), msg) |
| 1162 | + |
| 1163 | + @mock.patch('openstackclient.common.utils.find_resource') |
| 1164 | + def test_prep_server_detail(self, find_resource): |
| 1165 | + # Setup mock method return value. utils.find_resource() will be called |
| 1166 | + # twice in _prep_server_detail(): |
| 1167 | + # - The first time, return image info. |
| 1168 | + # - The second time, return flavor info. |
| 1169 | + _image = image_fakes.FakeImage.create_one_image() |
| 1170 | + _flavor = compute_fakes.FakeFlavor.create_one_flavor() |
| 1171 | + find_resource.side_effect = [_image, _flavor] |
| 1172 | + |
| 1173 | + # compute_client.servers.get() will be called once, return server info. |
| 1174 | + server_info = { |
| 1175 | + 'image': {u'id': _image.id}, |
| 1176 | + 'flavor': {u'id': _flavor.id}, |
| 1177 | + 'tenant_id': u'tenant-id-xxx', |
| 1178 | + 'networks': {u'public': [u'10.20.30.40', u'2001:db8::f']}, |
| 1179 | + 'links': u'http://xxx.yyy.com', |
| 1180 | + } |
| 1181 | + _server = compute_fakes.FakeServer.create_one_server(attrs=server_info) |
| 1182 | + self.servers_mock.get.return_value = _server |
| 1183 | + |
| 1184 | + # Prepare result data. |
| 1185 | + info = { |
| 1186 | + 'id': _server.id, |
| 1187 | + 'name': _server.name, |
| 1188 | + 'addresses': u'public=10.20.30.40, 2001:db8::f', |
| 1189 | + 'flavor': u'%s (%s)' % (_flavor.name, _flavor.id), |
| 1190 | + 'image': u'%s (%s)' % (_image.name, _image.id), |
| 1191 | + 'project_id': u'tenant-id-xxx', |
| 1192 | + 'properties': '', |
| 1193 | + } |
| 1194 | + |
| 1195 | + # Call _prep_server_detail(). |
| 1196 | + server_detail = server._prep_server_detail( |
| 1197 | + self.app.client_manager.compute, |
| 1198 | + _server |
| 1199 | + ) |
| 1200 | + # 'networks' is used to create _server. Remove it. |
| 1201 | + server_detail.pop('networks') |
| 1202 | + |
| 1203 | + # Check the results. |
| 1204 | + self.assertDictEqual(info, server_detail) |
0 commit comments