From f535ace7cf4850a3f72218411749e595b47663b4 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Fri, 22 Jul 2016 10:26:13 -0500 Subject: [PATCH] Allow shell class to be overridden in test subclass osc_lib.utils.TestShell may be subclassed in other modules to test osc_lib.shell.OpenStackShell subclasses. Set the shell class to be tested by setting TestShell.shell_class_path to the full class path. Change-Id: I0ab187d370ebb28760d90a8aca4b64eea19c8d9e --- osc_lib/tests/utils.py | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/osc_lib/tests/utils.py b/osc_lib/tests/utils.py index 8fa5889..b55e9ef 100644 --- a/osc_lib/tests/utils.py +++ b/osc_lib/tests/utils.py @@ -22,6 +22,7 @@ import os import fixtures from keystoneauth1 import loading from os_client_config import cloud_config +from oslo_utils import importutils from requests_mock.contrib import fixture import testtools @@ -249,12 +250,13 @@ class TestClientManager(TestCase): class TestShell(TestCase): - # cliff.app.App subclass - app_patch = "osc_lib.shell.OpenStackShell" + # Full name of the OpenStackShell class to test (cliff.app.App subclass) + shell_class_name = "osc_lib.shell.OpenStackShell" def setUp(self): super(TestShell, self).setUp() - self.cmd_patch = mock.patch(self.app_patch + ".run_subcommand") + self.shell_class = importutils.import_class(self.shell_class_name) + self.cmd_patch = mock.patch(self.shell_class_name + ".run_subcommand") self.cmd_save = self.cmd_patch.start() self.addCleanup(self.cmd_patch.stop) self.app = mock.Mock("Test Shell") @@ -270,10 +272,11 @@ class TestShell(TestCase): """ with mock.patch( - self.app_patch + ".initialize_app", + self.shell_class_name + ".initialize_app", self.app, ): - _shell, _cmd = make_shell(), cmd_options + " module list" + _shell = make_shell(shell_class=self.shell_class) + _cmd = cmd_options + " module list" fake_execute(_shell, _cmd) self.app.assert_called_with(["module", "list"]) @@ -299,7 +302,8 @@ class TestShell(TestCase): "os_client_config.config.OpenStackConfig.get_one_cloud", self.occ_get_one, ): - _shell, _cmd = make_shell(), cmd_options + " module list" + _shell = make_shell(shell_class=self.shell_class) + _cmd = cmd_options + " module list" fake_execute(_shell, _cmd) self.app.assert_called_with(["module", "list"]) @@ -311,24 +315,6 @@ class TestShell(TestCase): "%s does not match" % k, ) - def _assert_token_auth(self, cmd_options, default_args): - with mock.patch(self.app_patch + ".initialize_app", - self.app): - _shell, _cmd = make_shell(), cmd_options + " list role" - fake_execute(_shell, _cmd) - - self.app.assert_called_with(["list", "role"]) - self.assertEqual( - default_args.get("token", ''), - _shell.options.token, - "token" - ) - self.assertEqual( - default_args.get("auth_url", ''), - _shell.options.auth_url, - "auth_url" - ) - def _test_options_init_app(self, test_opts): """Test options on the command line""" for opt in test_opts.keys():