diff --git a/masakariclient/tests/unit/osc/v1/test_host.py b/masakariclient/tests/unit/osc/v1/test_host.py index e5e605f..19d2632 100644 --- a/masakariclient/tests/unit/osc/v1/test_host.py +++ b/masakariclient/tests/unit/osc/v1/test_host.py @@ -18,6 +18,7 @@ test_masakariclient Tests for `masakariclient` module. """ import mock +import uuid from osc_lib import utils @@ -26,6 +27,11 @@ from masakariclient.osc.v1.host import ShowHost from masakariclient.osc.v1.host import UpdateHost from masakariclient.tests import base +HOST_NAME = 'host_name' +HOST_ID = uuid.uuid4() +SEGMENT_NAME = 'segment_name' +SEGMENT_ID = uuid.uuid4() + class FakeNamespace(object): """Fake parser object.""" @@ -50,6 +56,14 @@ class FakeHosts(object): self.uuid = uuid +class FakeSegments(object): + """Fake segment show detail.""" + def __init__(self, name=None, uuid=None): + super(FakeSegments, self).__init__() + self.name = name + self.uuid = uuid + + class FakeHost(object): """Fake segment show detail.""" def __init__(self,): @@ -58,49 +72,53 @@ class FakeHost(object): def to_dict(self): return { 'reserved': 'False', - 'uuid': '124aa63c-bbe1-46c3-91a9-285fac7d86c6', - 'segment_id': '870da19d-37ec-41d2-a4b2-7be54b0d6ec9', + 'uuid': HOST_ID, 'on_maintenance': False, 'created_at': '2016-12-18T05:47:55.000000', 'control_attributes': 'control_attributes', 'updated_at': None, - 'name': 'host_name', + 'name': HOST_NAME, 'type': 'auto', 'id': 18, - 'failover_segment_id': '187dd15a-9c1d-4bf7-9f6c-014d5bc66992', + 'failover_segment_id': SEGMENT_ID, } -class TestV1ShowHost(base.TestCase): +class BaseV1Host(base.TestCase): + def setUp(self): + super(BaseV1Host, self).setUp() + + self.app = mock.Mock() + self.app_args = mock.Mock() + self.client_manager = mock.Mock() + self.app.client_manager.ha = self.client_manager + self.columns = [ + 'created_at', 'updated_at', 'uuid', 'name', 'type', + 'control_attributes', 'reserved', 'on_maintenance', + 'failover_segment_id', + ] + # fake host list + self.dummy_hosts = [FakeHosts(name=HOST_NAME, uuid=HOST_ID)] + # fake segment list + self.dummy_segments = [FakeSegments(name=SEGMENT_NAME, + uuid=SEGMENT_ID)] + # fake host show + self.dummy_host = FakeHost() + + +class TestV1ShowHost(BaseV1Host): def setUp(self): super(TestV1ShowHost, self).setUp() - - self.app = mock.Mock() - self.app_args = mock.Mock() self.show_host = ShowHost(self.app, self.app_args, cmd_name='host show') - self.client_manager = mock.Mock() - self.app.client_manager.ha = self.client_manager - self.columns = [ - 'created_at', 'updated_at', 'uuid', 'name', 'type', - 'control_attributes', 'reserved', 'on_maintenance', - 'failover_segment_id', - ] - # fake host list - self.dummy_hosts = [] - self.dummy_hosts.append(FakeHosts( - name='host_name', - uuid='124aa63c-bbe1-46c3-91a9-285fac7d86c6')) - # fake host show - self.dummy_host = FakeHost() @mock.patch.object(utils, 'get_dict_properties') def test_take_action_by_uuid(self, mock_get_dict_properties): # command param - parsed_args = FakeNamespace( - segment_id='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - host='124aa63c-bbe1-46c3-91a9-285fac7d86c6') + parsed_args = FakeNamespace(segment_id=SEGMENT_ID, host=HOST_ID) + # return value segment list + self.app.client_manager.ha.segments.return_value = self.dummy_segments # return value host list self.app.client_manager.ha.hosts.return_value = self.dummy_hosts # return value host show @@ -115,9 +133,9 @@ class TestV1ShowHost(base.TestCase): def test_take_action_by_name(self, mock_get_dict_properties): # command param - parsed_args = FakeNamespace( - segment_id='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - host='host_name') + parsed_args = FakeNamespace(segment_id=SEGMENT_ID, host=HOST_NAME) + # return value segment list + self.app.client_manager.ha.segments.return_value = self.dummy_segments # return value host list self.app.client_manager.ha.hosts.return_value = self.dummy_hosts # return value host show @@ -128,37 +146,20 @@ class TestV1ShowHost(base.TestCase): self.dummy_host.to_dict(), self.columns, formatters={}) -class TestV1UpdateHost(base.TestCase): +class TestV1UpdateHost(BaseV1Host): def setUp(self): super(TestV1UpdateHost, self).setUp() - - self.app = mock.Mock() - self.app_args = mock.Mock() self.update_host = UpdateHost(self.app, self.app_args, cmd_name='host update') - self.client_manager = mock.Mock() - self.app.client_manager.ha = self.client_manager - self.columns = [ - 'created_at', 'updated_at', 'uuid', 'name', 'type', - 'control_attributes', 'reserved', 'on_maintenance', - 'failover_segment_id', - ] - # fake host list - self.dummy_hosts = [] - self.dummy_hosts.append(FakeHosts( - name='host_name', - uuid='124aa63c-bbe1-46c3-91a9-285fac7d86c6')) - # fake host show - self.dummy_host = FakeHost() @mock.patch.object(utils, 'get_dict_properties') def test_take_action_by_uuid(self, mock_get_dict_properties): # command param parsed_args = FakeNamespace( - segment_id='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - host='124aa63c-bbe1-46c3-91a9-285fac7d86c6', - reserved=True) + segment_id=SEGMENT_ID, host=HOST_ID, reserved=True) + # return value segment list + self.app.client_manager.ha.segments.return_value = self.dummy_segments # return value host list self.app.client_manager.ha.hosts.return_value = self.dummy_hosts # return value host show @@ -173,9 +174,9 @@ class TestV1UpdateHost(base.TestCase): # command param parsed_args = FakeNamespace( - segment_id='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - host='host_name', - reserved=True) + segment_id=SEGMENT_ID, host=HOST_NAME, reserved=True) + # return value segment list + self.app.client_manager.ha.segments.return_value = self.dummy_segments # return value host list self.app.client_manager.ha.hosts.return_value = self.dummy_hosts # return value host show @@ -186,53 +187,40 @@ class TestV1UpdateHost(base.TestCase): self.dummy_host.to_dict(), self.columns, formatters={}) -class TestV1DeleteHost(base.TestCase): +class TestV1DeleteHost(BaseV1Host): def setUp(self): super(TestV1DeleteHost, self).setUp() - - self.app = mock.Mock() - self.app_args = mock.Mock() self.delete_host = DeleteHost(self.app, self.app_args, - cmd_name='host update') - self.client_manager = mock.Mock() - self.app.client_manager.ha = self.client_manager - self.columns = [ - 'created_at', 'updated_at', 'uuid', 'name', 'type', - 'control_attributes', 'reserved', 'on_maintenance', - 'failover_segment_id', - ] - # fake host list - self.dummy_hosts = [] - self.dummy_hosts.append(FakeHosts( - name='host_name', - uuid='124aa63c-bbe1-46c3-91a9-285fac7d86c6')) - # fake host show - self.dummy_host = FakeHost() + cmd_name='host delete') def test_take_action_by_uuid(self): # command param - parsed_args = FakeNamespace( - segment_id='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - host='124aa63c-bbe1-46c3-91a9-285fac7d86c6') + parsed_args = FakeNamespace(segment_id=SEGMENT_ID, host=HOST_ID) + # return value segment list + self.app.client_manager.ha.segments.return_value = self.dummy_segments # return value host list self.app.client_manager.ha.hosts.return_value = self.dummy_hosts # return value host show - self.app.client_manager.ha.get_host.return_value =\ - self.dummy_host + self.app.client_manager.ha.delete_host.return_value = None # show the host specified by uuid self.delete_host.take_action(parsed_args) + self.app.client_manager.ha.delete_host.assert_called_once_with( + SEGMENT_ID, HOST_ID, False) + def test_take_action_by_name(self): # command param - parsed_args = FakeNamespace( - segment_id='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - host='host_name') + parsed_args = FakeNamespace(segment_id=SEGMENT_ID, host=HOST_NAME) + # return value segment list + self.app.client_manager.ha.segments.return_value = self.dummy_segments # return value host list self.app.client_manager.ha.hosts.return_value = self.dummy_hosts # return value host show - self.app.client_manager.ha.get_host.return_value =\ - self.dummy_host + self.app.client_manager.ha.delete_host.return_value = None # show the host specified by name self.delete_host.take_action(parsed_args) + + self.app.client_manager.ha.delete_host.assert_called_once_with( + SEGMENT_ID, HOST_ID, False) diff --git a/masakariclient/tests/unit/osc/v1/test_segment.py b/masakariclient/tests/unit/osc/v1/test_segment.py index d7c1070..37acc7d 100644 --- a/masakariclient/tests/unit/osc/v1/test_segment.py +++ b/masakariclient/tests/unit/osc/v1/test_segment.py @@ -18,6 +18,7 @@ test_masakariclient Tests for `masakariclient` module. """ import mock +import uuid from osc_lib import utils @@ -26,6 +27,9 @@ from masakariclient.osc.v1.segment import ShowSegment from masakariclient.osc.v1.segment import UpdateSegment from masakariclient.tests import base +SEGMENT_NAME = 'segment_name' +SEGMENT_ID = uuid.uuid4() + class FakeNamespace(object): """Fake parser object.""" @@ -62,8 +66,8 @@ class FakeSegment(object): return { 'created_at': '2016-12-18T05:47:46.000000', 'updated_at': '2016-12-18T06:05:16.000000', - 'uuid': '187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - 'name': 'test_segment', + 'uuid': SEGMENT_ID, + 'name': SEGMENT_NAME, 'description': 'test_segment_description', 'id': 1, 'service_type': 'test_type', @@ -71,35 +75,38 @@ class FakeSegment(object): } -class TestV1ShowSegment(base.TestCase): +class BaseV1Segment(base.TestCase): def setUp(self): - super(TestV1ShowSegment, self).setUp() + super(BaseV1Segment, self).setUp() self.app = mock.Mock() self.app_args = mock.Mock() + self.client_manager = mock.Mock() + self.app.client_manager.ha = self.client_manager + # segment data setup + self.dummy_segment = FakeSegment() + + +class TestV1ShowSegment(BaseV1Segment): + def setUp(self): + super(TestV1ShowSegment, self).setUp() + self.show_seg = ShowSegment(self.app, self.app_args, cmd_name='segment show') - self.client_manager = mock.Mock() - self.app.client_manager.ha = self.client_manager self.columns = ['created_at', 'updated_at', 'uuid', 'name', 'description', 'id', 'service_type', 'recovery_method', ] # return value segment list - self.dummy_segments = [] - self.dummy_segments.append(FakeSegments( - name='segment_name', - uuid='187dd15a-9c1d-4bf7-9f6c-014d5bc66992')) - # return value segment show - self.dummy_segment = FakeSegment() + self.dummy_segments = [FakeSegments(name=SEGMENT_NAME, + uuid=SEGMENT_ID)] @mock.patch.object(utils, 'get_dict_properties') def test_take_action_by_uuid(self, mock_get_dict_properties): # command param - parsed_args = FakeNamespace( - segment='187dd15a-9c1d-4bf7-9f6c-014d5bc66992') + parsed_args = FakeNamespace(segment=SEGMENT_ID) # return value segment list self.app.client_manager.ha.segments.return_value =\ self.dummy_segments @@ -115,14 +122,10 @@ class TestV1ShowSegment(base.TestCase): def test_take_action_by_name(self, mock_get_dict_properties): # command param - parsed_args = FakeNamespace(segment='segment_name') + parsed_args = FakeNamespace(segment=SEGMENT_NAME) # return value segment list - dummy_segments = [] - dummy_segments.append(FakeSegments( - name='segment_name', - uuid='187dd15a-9c1d-4bf7-9f6c-014d5bc66992')) self.app.client_manager.ha.segments.return_value =\ - dummy_segments + self.dummy_segments # return value segment show dummy_segment = FakeSegment() self.app.client_manager.ha.get_segment.return_value =\ @@ -133,38 +136,36 @@ class TestV1ShowSegment(base.TestCase): dummy_segment.to_dict(), self.columns, formatters={}) -class TestV1UpdateSegment(base.TestCase): +class TestV1UpdateSegment(BaseV1Segment): def setUp(self): super(TestV1UpdateSegment, self).setUp() - self.app = mock.Mock() - self.app_args = mock.Mock() self.update_seg = UpdateSegment(self.app, self.app_args, cmd_name='segment update') - self.client_manager = mock.Mock() - self.app.client_manager.ha = self.client_manager self.columns = ['created_at', 'updated_at', 'uuid', 'name', 'description', 'id', 'service_type', 'recovery_method', ] # segment list - self.dummy_segments = [] + self.dummy_segments = [ + FakeSegments( + name=SEGMENT_NAME, uuid=SEGMENT_ID, + description='FakeNamespace_description', + recovery_method='Update_recovery_method', + service_type='test_type')] self.dummy_segments.append(FakeSegments( - name='segment_name', - uuid='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', + name=SEGMENT_NAME, uuid=SEGMENT_ID, description='FakeNamespace_description', recovery_method='Update_recovery_method', service_type='test_type')) - # segment data setup - self.dummy_segment = FakeSegment() @mock.patch.object(utils, 'get_dict_properties') def test_take_action_by_uuid(self, mock_get_dict_properties): # command param parsed_args = FakeNamespace( - segment='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', + segment=SEGMENT_ID, description='FakeNamespace_description') # return value segment list self.app.client_manager.ha.segments.return_value =\ @@ -181,7 +182,7 @@ class TestV1UpdateSegment(base.TestCase): def test_take_action_by_name(self, mock_get_dict_properties): # command param - parsed_args = FakeNamespace(segment='segment_name') + parsed_args = FakeNamespace(segment=SEGMENT_NAME) # return value segment list self.app.client_manager.ha.segments.return_value =\ self.dummy_segments @@ -194,57 +195,53 @@ class TestV1UpdateSegment(base.TestCase): self.dummy_segment.to_dict(), self.columns, formatters={}) -class TestV1DeleteSegment(base.TestCase): +class TestV1DeleteSegment(BaseV1Segment): def setUp(self): super(TestV1DeleteSegment, self).setUp() - self.app = mock.Mock() - self.app_args = mock.Mock() self.delete_seg = DeleteSegment(self.app, self.app_args, cmd_name='segment delete') - self.client_manager = mock.Mock() - self.app.client_manager.ha = self.client_manager # segment list - self.dummy_segments = [] - self.dummy_segments.append(FakeSegments( - name='segment_name', - uuid='187dd15a-9c1d-4bf7-9f6c-014d5bc66992', - description='FakeNamespace_description', - recovery_method='Update_recovery_method', - service_type='test_type')) - # segment - self.dummy_segment = FakeSegment() + self.dummy_segments = [ + FakeSegments( + name=SEGMENT_NAME, uuid=SEGMENT_ID, + description='FakeNamespace_description', + recovery_method='Update_recovery_method', + service_type='test_type')] def test_take_action_by_uuid(self): # command param - parsed_args = FakeNamespace( - segment='187dd15a-9c1d-4bf7-9f6c-014d5bc66992') + parsed_args = FakeNamespace(segment=[SEGMENT_ID]) # return_value segment list self.app.client_manager.ha.segments.return_value =\ self.dummy_segments # return_value segment delete - self.app.client_manager.ha.delete_segment.return_value =\ - self.dummy_segment + self.app.client_manager.ha.delete_segment.return_value = None # segment delete self.delete_seg.take_action(parsed_args) + self.app.client_manager.ha.delete_segment.assert_called_once_with( + SEGMENT_ID, False) + def test_take_action_by_name(self): # command param - parsed_args = FakeNamespace(segment='segment_name') + parsed_args = FakeNamespace(segment=[SEGMENT_NAME]) # return_value segment list self.app.client_manager.ha.segments.return_value =\ self.dummy_segments # return_value segment delete - self.app.client_manager.ha.delete_segment.return_value =\ - self.dummy_segment + self.app.client_manager.ha.delete_segment.return_value = None # segment delete self.delete_seg.take_action(parsed_args) + + self.app.client_manager.ha.delete_segment.assert_called_once_with( + SEGMENT_ID, False) diff --git a/masakariclient/tests/unit/test_cliargs.py b/masakariclient/tests/unit/test_cliargs.py index e96551a..38ff0e5 100644 --- a/masakariclient/tests/unit/test_cliargs.py +++ b/masakariclient/tests/unit/test_cliargs.py @@ -23,7 +23,49 @@ class TestCliArgs(testtools.TestCase): def test_add_global_identity_args(self): parser = mock.Mock() cliargs.add_global_identity_args(parser) + expected = [ + '--os-auth-plugin', + '--os-auth-url', + '--os-project-id', + '--os-project-name', + '--os-tenant-id', + '--os-tenant-name', + '--os-domain-id', + '--os-domain-name', + '--os-project-domain-id', + '--os-project-domain-name', + '--os-user-domain-id', + '--os-user-domain-name', + '--os-username', + '--os-user-id', + '--os-password', + '--os-trust-id', + '--os-token', + '--os-access-info' + ] + + options = [arg[0][0] for arg in parser.add_argument.call_args_list] + self.assertEqual(expected, options) + + parser.add_mutually_exclusive_group.assert_called_once_with() + group = parser.add_mutually_exclusive_group.return_value + + verify_opts = [arg[0][0] for arg in group.add_argument.call_args_list] + verify_args = [ + '--os-cacert', + '--verify', + '--insecure' + ] + self.assertEqual(verify_args, verify_opts) def test_add_global_args(self): parser = mock.Mock() cliargs.add_global_args(parser, '1') + expected = [ + '-h', + '--masakari-api-version', + '-d' + ] + + options = [arg[0][0] for arg in parser.add_argument.call_args_list] + self.assertEqual(expected, options)