From 17f3685a83d29f33f79c0626eceefae029c2aaf5 Mon Sep 17 00:00:00 2001 From: Tang Chen Date: Wed, 9 Dec 2015 11:20:34 +0800 Subject: [PATCH] TestServerGeneral: Add test for _prep_server_detail() 1. Make TestServerGeneral inherit from TestServer because we need to use servers_mock, image_mock and flavor_mock in compute_client. 2. Create a dict containing all info of a server in the original format, and pass it to _prep_server_detail(). 3. Compare the original and formatted dict. Change-Id: Ie0b83c42a5c3bbba630a064d28374d07e2ce9caf Implements: blueprint osc-unit-test-framework-improvement --- .../tests/compute/v2/test_server.py | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py index fb2fc23d98..dba44293ad 100644 --- a/openstackclient/tests/compute/v2/test_server.py +++ b/openstackclient/tests/compute/v2/test_server.py @@ -14,7 +14,6 @@ # import mock -import testtools from mock import call from openstackclient.common import exceptions @@ -1066,7 +1065,7 @@ class TestServerUnshelve(TestServer): self.run_method_with_servers('unshelve', 3) -class TestServerGeneral(testtools.TestCase): +class TestServerGeneral(TestServer): OLD = { 'private': [ { @@ -1160,3 +1159,46 @@ class TestServerGeneral(testtools.TestCase): 'actual = %s\n' % (data_1, data_2, networks_format)) self.assertIn(networks_format, (data_1, data_2), msg) + + @mock.patch('openstackclient.common.utils.find_resource') + def test_prep_server_detail(self, find_resource): + # Setup mock method return value. utils.find_resource() will be called + # twice in _prep_server_detail(): + # - The first time, return image info. + # - The second time, return flavor info. + _image = image_fakes.FakeImage.create_one_image() + _flavor = compute_fakes.FakeFlavor.create_one_flavor() + find_resource.side_effect = [_image, _flavor] + + # compute_client.servers.get() will be called once, return server info. + server_info = { + 'image': {u'id': _image.id}, + 'flavor': {u'id': _flavor.id}, + 'tenant_id': u'tenant-id-xxx', + 'networks': {u'public': [u'10.20.30.40', u'2001:db8::f']}, + 'links': u'http://xxx.yyy.com', + } + _server = compute_fakes.FakeServer.create_one_server(attrs=server_info) + self.servers_mock.get.return_value = _server + + # Prepare result data. + info = { + 'id': _server.id, + 'name': _server.name, + 'addresses': u'public=10.20.30.40, 2001:db8::f', + 'flavor': u'%s (%s)' % (_flavor.name, _flavor.id), + 'image': u'%s (%s)' % (_image.name, _image.id), + 'project_id': u'tenant-id-xxx', + 'properties': '', + } + + # Call _prep_server_detail(). + server_detail = server._prep_server_detail( + self.app.client_manager.compute, + _server + ) + # 'networks' is used to create _server. Remove it. + server_detail.pop('networks') + + # Check the results. + self.assertDictEqual(info, server_detail)