diff options
Diffstat (limited to 'openstackclient/tests')
| -rw-r--r-- | openstackclient/tests/common/test_availability_zone.py | 65 | ||||
| -rw-r--r-- | openstackclient/tests/network/v2/fakes.py | 53 |
2 files changed, 118 insertions, 0 deletions
diff --git a/openstackclient/tests/common/test_availability_zone.py b/openstackclient/tests/common/test_availability_zone.py index 232b56c9..e44455c7 100644 --- a/openstackclient/tests/common/test_availability_zone.py +++ b/openstackclient/tests/common/test_availability_zone.py @@ -11,11 +11,13 @@ # under the License. # +import mock import six from openstackclient.common import availability_zone from openstackclient.tests.compute.v2 import fakes as compute_fakes from openstackclient.tests import fakes +from openstackclient.tests.network.v2 import fakes as network_fakes from openstackclient.tests import utils from openstackclient.tests.volume.v2 import fakes as volume_fakes @@ -33,6 +35,7 @@ def _build_compute_az_datalist(compute_az, long_datalist=False): datalist += ( compute_az.zoneName, 'available', + '', host, service, 'enabled :-) ' + state['updated_at'], @@ -51,6 +54,23 @@ def _build_volume_az_datalist(volume_az, long_datalist=False): datalist = ( volume_az.zoneName, 'available', + '', '', '', '', + ) + return (datalist,) + + +def _build_network_az_datalist(network_az, long_datalist=False): + datalist = () + if not long_datalist: + datalist = ( + network_az.name, + network_az.state, + ) + else: + datalist = ( + network_az.name, + network_az.state, + network_az.resource, '', '', '', ) return (datalist,) @@ -79,6 +99,16 @@ class TestAvailabilityZone(utils.TestCommand): self.volume_azs_mock = volume_client.availability_zones self.volume_azs_mock.reset_mock() + network_client = network_fakes.FakeNetworkV2Client( + endpoint=fakes.AUTH_URL, + token=fakes.AUTH_TOKEN, + ) + self.app.client_manager.network = network_client + + network_client.availability_zones = mock.Mock() + network_client.find_extension = mock.Mock() + self.network_azs_mock = network_client.availability_zones + class TestAvailabilityZoneList(TestAvailabilityZone): @@ -86,11 +116,14 @@ class TestAvailabilityZoneList(TestAvailabilityZone): compute_fakes.FakeAvailabilityZone.create_availability_zones() volume_azs = \ volume_fakes.FakeAvailabilityZone.create_availability_zones(count=1) + network_azs = \ + network_fakes.FakeAvailabilityZone.create_availability_zones() short_columnslist = ('Zone Name', 'Zone Status') long_columnslist = ( 'Zone Name', 'Zone Status', + 'Zone Resource', 'Host Name', 'Service Name', 'Service Status', @@ -101,6 +134,7 @@ class TestAvailabilityZoneList(TestAvailabilityZone): self.compute_azs_mock.list.return_value = self.compute_azs self.volume_azs_mock.list.return_value = self.volume_azs + self.network_azs_mock.return_value = self.network_azs # Get the command object to test self.cmd = availability_zone.ListAvailabilityZone(self.app, None) @@ -115,6 +149,7 @@ class TestAvailabilityZoneList(TestAvailabilityZone): self.compute_azs_mock.list.assert_called_with() self.volume_azs_mock.list.assert_called_with() + self.network_azs_mock.assert_called_with() self.assertEqual(self.short_columnslist, columns) datalist = () @@ -122,6 +157,8 @@ class TestAvailabilityZoneList(TestAvailabilityZone): datalist += _build_compute_az_datalist(compute_az) for volume_az in self.volume_azs: datalist += _build_volume_az_datalist(volume_az) + for network_az in self.network_azs: + datalist += _build_network_az_datalist(network_az) self.assertEqual(datalist, tuple(data)) def test_availability_zone_list_long(self): @@ -138,6 +175,7 @@ class TestAvailabilityZoneList(TestAvailabilityZone): self.compute_azs_mock.list.assert_called_with() self.volume_azs_mock.list.assert_called_with() + self.network_azs_mock.assert_called_with() self.assertEqual(self.long_columnslist, columns) datalist = () @@ -147,6 +185,9 @@ class TestAvailabilityZoneList(TestAvailabilityZone): for volume_az in self.volume_azs: datalist += _build_volume_az_datalist(volume_az, long_datalist=True) + for network_az in self.network_azs: + datalist += _build_network_az_datalist(network_az, + long_datalist=True) self.assertEqual(datalist, tuple(data)) def test_availability_zone_list_compute(self): @@ -163,6 +204,7 @@ class TestAvailabilityZoneList(TestAvailabilityZone): self.compute_azs_mock.list.assert_called_with() self.volume_azs_mock.list.assert_not_called() + self.network_azs_mock.assert_not_called() self.assertEqual(self.short_columnslist, columns) datalist = () @@ -184,9 +226,32 @@ class TestAvailabilityZoneList(TestAvailabilityZone): self.compute_azs_mock.list.assert_not_called() self.volume_azs_mock.list.assert_called_with() + self.network_azs_mock.assert_not_called() self.assertEqual(self.short_columnslist, columns) datalist = () for volume_az in self.volume_azs: datalist += _build_volume_az_datalist(volume_az) self.assertEqual(datalist, tuple(data)) + + def test_availability_zone_list_network(self): + arglist = [ + '--network', + ] + verifylist = [ + ('network', True), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + self.compute_azs_mock.list.assert_not_called() + self.volume_azs_mock.list.assert_not_called() + self.network_azs_mock.assert_called_with() + + self.assertEqual(self.short_columnslist, columns) + datalist = () + for network_az in self.network_azs: + datalist += _build_network_az_datalist(network_az) + self.assertEqual(datalist, tuple(data)) diff --git a/openstackclient/tests/network/v2/fakes.py b/openstackclient/tests/network/v2/fakes.py index 4c862bd3..6f03d797 100644 --- a/openstackclient/tests/network/v2/fakes.py +++ b/openstackclient/tests/network/v2/fakes.py @@ -69,6 +69,59 @@ class TestNetworkV2(utils.TestCommand): ) +class FakeAvailabilityZone(object): + """Fake one or more network availability zones (AZs).""" + + @staticmethod + def create_one_availability_zone(attrs={}, methods={}): + """Create a fake AZ. + + :param Dictionary attrs: + A dictionary with all attributes + :param Dictionary methods: + A dictionary with all methods + :return: + A FakeResource object with name, state, etc. + """ + # Set default attributes. + availability_zone = { + 'name': uuid.uuid4().hex, + 'state': 'available', + 'resource': 'network', + } + + # Overwrite default attributes. + availability_zone.update(attrs) + + availability_zone = fakes.FakeResource( + info=copy.deepcopy(availability_zone), + methods=methods, + loaded=True) + return availability_zone + + @staticmethod + def create_availability_zones(attrs={}, methods={}, count=2): + """Create multiple fake AZs. + + :param Dictionary attrs: + A dictionary with all attributes + :param Dictionary methods: + A dictionary with all methods + :param int count: + The number of AZs to fake + :return: + A list of FakeResource objects faking the AZs + """ + availability_zones = [] + for i in range(0, count): + availability_zone = \ + FakeAvailabilityZone.create_one_availability_zone( + attrs, methods) + availability_zones.append(availability_zone) + + return availability_zones + + class FakeNetwork(object): """Fake one or more networks.""" |
