diff --git a/cinderclient/tests/functional/base.py b/cinderclient/tests/functional/base.py index 965568b44..b8d593904 100644 --- a/cinderclient/tests/functional/base.py +++ b/cinderclient/tests/functional/base.py @@ -71,6 +71,17 @@ class ClientTestBase(base.ClientTestBase): return self.clients.cinder(*args, **kwargs) + def assertTableHeaders(self, output_lines, field_names): + """Verify that output table has headers item listed in field_names. + + :param output_lines: output table from cmd + :param field_names: field names from the output table of the cmd + """ + table = self.parser.table(output_lines) + headers = table['headers'] + for field in field_names: + self.assertIn(field, headers) + def assertTableStruct(self, items, field_names): """Verify that all items has keys listed in field_names. diff --git a/cinderclient/tests/functional/test_readonly_cli.py b/cinderclient/tests/functional/test_readonly_cli.py index 64a190b52..bc5e52107 100644 --- a/cinderclient/tests/functional/test_readonly_cli.py +++ b/cinderclient/tests/functional/test_readonly_cli.py @@ -28,22 +28,22 @@ class CinderClientReadOnlyTests(base.ClientTestBase): # Commands in order listed in 'cinder help' def test_absolute_limits(self): - limits = self.parser.listing(self.cinder('absolute-limits')) - self.assertTableStruct(limits, ['Name', 'Value']) + limits = self.cinder('absolute-limits') + self.assertTableHeaders(limits, ['Name', 'Value']) def test_availability_zones(self): - zone_list = self.parser.listing(self.cinder('availability-zone-list')) - self.assertTableStruct(zone_list, ['Name', 'Status']) + zone_list = self.cinder('availability-zone-list') + self.assertTableHeaders(zone_list, ['Name', 'Status']) def test_backup_list(self): - backup_list = self.parser.listing(self.cinder('backup-list')) - self.assertTableStruct(backup_list, ['ID', 'Volume ID', 'Status', + backup_list = self.cinder('backup-list') + self.assertTableHeaders(backup_list, ['ID', 'Volume ID', 'Status', 'Name', 'Size', 'Object Count', 'Container']) def test_encryption_type_list(self): - encrypt_list = self.parser.listing(self.cinder('encryption-type-list')) - self.assertTableStruct(encrypt_list, ['Volume Type ID', 'Provider', + encrypt_list = self.cinder('encryption-type-list') + self.assertTableHeaders(encrypt_list, ['Volume Type ID', 'Provider', 'Cipher', 'Key Size', 'Control Location']) @@ -56,34 +56,34 @@ class CinderClientReadOnlyTests(base.ClientTestBase): self.assertEqual('Value', headers[1]) def test_list(self): - list = self.parser.listing(self.cinder('list')) - self.assertTableStruct(list, ['ID', 'Status', 'Name', 'Size', + list = self.cinder('list') + self.assertTableHeaders(list, ['ID', 'Status', 'Name', 'Size', 'Volume Type', 'Bootable', 'Attached to']) def test_qos_list(self): - qos_list = self.parser.listing(self.cinder('qos-list')) - self.assertTableStruct(qos_list, ['ID', 'Name', 'Consumer', 'specs']) + qos_list = self.cinder('qos-list') + self.assertTableHeaders(qos_list, ['ID', 'Name', 'Consumer', 'specs']) def test_rate_limits(self): - rate_limits = self.parser.listing(self.cinder('rate-limits')) - self.assertTableStruct(rate_limits, ['Verb', 'URI', 'Value', 'Remain', + rate_limits = self.cinder('rate-limits') + self.assertTableHeaders(rate_limits, ['Verb', 'URI', 'Value', 'Remain', 'Unit', 'Next_Available']) def test_service_list(self): - service_list = self.parser.listing(self.cinder('service-list')) - self.assertTableStruct(service_list, ['Binary', 'Host', 'Zone', + service_list = self.cinder('service-list') + self.assertTableHeaders(service_list, ['Binary', 'Host', 'Zone', 'Status', 'State', 'Updated_at']) def test_snapshot_list(self): - snapshot_list = self.parser.listing(self.cinder('snapshot-list')) - self.assertTableStruct(snapshot_list, ['ID', 'Volume ID', 'Status', + snapshot_list = self.cinder('snapshot-list') + self.assertTableHeaders(snapshot_list, ['ID', 'Volume ID', 'Status', 'Name', 'Size']) def test_transfer_list(self): - transfer_list = self.parser.listing(self.cinder('transfer-list')) - self.assertTableStruct(transfer_list, ['ID', 'Volume ID', 'Name']) + transfer_list = self.cinder('transfer-list') + self.assertTableHeaders(transfer_list, ['ID', 'Volume ID', 'Name']) def test_type_list(self): - type_list = self.parser.listing(self.cinder('type-list')) - self.assertTableStruct(type_list, ['ID', 'Name']) + type_list = self.cinder('type-list') + self.assertTableHeaders(type_list, ['ID', 'Name'])