Add test for subcommands

This tests that the expected subcommands register
in the shell client, by looking at the output
that would show up in "cinder help".

The purpose of this is to help prevent us from
accidentally deleting some commands when refactoring
shell code.

TODO: cover commands post-3.0
Change-Id: Ifcbc08ae9184fa33049b18f8ad7ef5d92003a7b8
This commit is contained in:
Eric Harney 2019-11-12 15:54:07 -05:00
parent 7f282a5ea4
commit a7e9a49a3f
2 changed files with 119 additions and 0 deletions
cinderclient

@ -135,6 +135,7 @@ class OpenStackCinderShell(object):
def __init__(self):
self.ks_logger = None
self.client_logger = None
self.extensions = []
def get_base_parser(self):
parser = CinderClientArgumentParser(

@ -1443,3 +1443,121 @@ class ShellTest(utils.TestCase):
'--os-volume-api-version 3.59 transfer-list')
url = ('/volume-transfers/detail')
self.assert_called('GET', url)
def test_subcommand_parser(self):
"""Ensure that all the expected commands show up.
This test ensures that refactoring code does not somehow result in
a command accidentally ceasing to exist.
TODO: add a similar test for 3.59 or so
"""
p = self.shell.get_subcommand_parser(api_versions.APIVersion("3.0"),
input_args=['help'], do_help=True)
help_text = p.format_help()
# These are v3.0 commands only
expected_commands = ('absolute-limits',
'api-version',
'availability-zone-list',
'backup-create',
'backup-delete',
'backup-export',
'backup-import',
'backup-list',
'backup-reset-state',
'backup-restore',
'backup-show',
'cgsnapshot-create',
'cgsnapshot-delete',
'cgsnapshot-list',
'cgsnapshot-show',
'consisgroup-create',
'consisgroup-create-from-src',
'consisgroup-delete',
'consisgroup-list',
'consisgroup-show',
'consisgroup-update',
'create',
'delete',
'encryption-type-create',
'encryption-type-delete',
'encryption-type-list',
'encryption-type-show',
'encryption-type-update',
'extend',
'extra-specs-list',
'failover-host',
'force-delete',
'freeze-host',
'get-capabilities',
'get-pools',
'image-metadata',
'image-metadata-show',
'list',
'manage',
'metadata',
'metadata-show',
'metadata-update-all',
'migrate',
'qos-associate',
'qos-create',
'qos-delete',
'qos-disassociate',
'qos-disassociate-all',
'qos-get-association',
'qos-key',
'qos-list',
'qos-show',
'quota-class-show',
'quota-class-update',
'quota-defaults',
'quota-delete',
'quota-show',
'quota-update',
'quota-usage',
'rate-limits',
'readonly-mode-update',
'rename',
'reset-state',
'retype',
'service-disable',
'service-enable',
'service-list',
'set-bootable',
'show',
'snapshot-create',
'snapshot-delete',
'snapshot-list',
'snapshot-manage',
'snapshot-metadata',
'snapshot-metadata-show',
'snapshot-metadata-update-all',
'snapshot-rename',
'snapshot-reset-state',
'snapshot-show',
'snapshot-unmanage',
'thaw-host',
'transfer-accept',
'transfer-create',
'transfer-delete',
'transfer-list',
'transfer-show',
'type-access-add',
'type-access-list',
'type-access-remove',
'type-create',
'type-default',
'type-delete',
'type-key',
'type-list',
'type-show',
'type-update',
'unmanage',
'upload-to-image',
'version-list',
'bash-completion',
'help',)
for e in expected_commands:
self.assertIn(' ' + e, help_text)