summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2013-01-31 19:30:25 -0600
committerDean Troyer <dtroyer@gmail.com>2013-02-06 11:36:28 -0600
commitfbc412e533bd7cb07c6d930e194f660e14b2319f (patch)
tree6446e48bf6c1663bef7afdf20840bbfff82cf434 /tests
parentb26cb5bf683e7f4f03d9704524a188b76ac5e9b9 (diff)
downloadpython-openstackclient-fbc412e533bd7cb07c6d930e194f660e14b2319f.tar.gz
Multiple API version support
* Use multiple entry point groups to represent each API+version combination supported * Add some tests Try it out: * Right now only '* user' commands have multiple overlapping versions; you can see the selection between v2.0 and v3 by looking at the command help output for 'tenant' vs 'project': os --os-identity-api-version=2.0 help set user os --os-identity-api-version=3 help set user Change-Id: I7114fd246843df0243d354a7cce697810bb7de62
Diffstat (limited to 'tests')
-rw-r--r--tests/common/test_clientmanager.py (renamed from tests/test_clientmanager.py)0
-rw-r--r--tests/common/test_commandmanager.py71
-rw-r--r--tests/test_shell.py24
3 files changed, 95 insertions, 0 deletions
diff --git a/tests/test_clientmanager.py b/tests/common/test_clientmanager.py
index fe99c599..fe99c599 100644
--- a/tests/test_clientmanager.py
+++ b/tests/common/test_clientmanager.py
diff --git a/tests/common/test_commandmanager.py b/tests/common/test_commandmanager.py
new file mode 100644
index 00000000..f0a0b341
--- /dev/null
+++ b/tests/common/test_commandmanager.py
@@ -0,0 +1,71 @@
+# Copyright 2012-2013 OpenStack, LLC.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+import mock
+
+from openstackclient.common import commandmanager
+from tests import utils
+
+
+class FakeCommand(object):
+ @classmethod
+ def load(cls):
+ return cls
+
+ def __init__(self):
+ return
+
+FAKE_CMD_ONE = FakeCommand
+FAKE_CMD_TWO = FakeCommand
+FAKE_CMD_ALPHA = FakeCommand
+FAKE_CMD_BETA = FakeCommand
+
+
+class FakeCommandManager(commandmanager.CommandManager):
+ commands = {}
+
+ def _load_commands(self, group=None):
+ if not group:
+ self.commands['one'] = FAKE_CMD_ONE
+ self.commands['two'] = FAKE_CMD_TWO
+ else:
+ self.commands['alpha'] = FAKE_CMD_ALPHA
+ self.commands['beta'] = FAKE_CMD_BETA
+
+
+class TestCommandManager(utils.TestCase):
+ def test_add_command_group(self):
+ mgr = FakeCommandManager('test')
+
+ # Make sure add_command() still functions
+ mock_cmd_one = mock.Mock()
+ mgr.add_command('mock', mock_cmd_one)
+ cmd_mock, name, args = mgr.find_command(['mock'])
+ self.assertEqual(cmd_mock, mock_cmd_one)
+
+ # Find a command added in initialization
+ cmd_one, name, args = mgr.find_command(['one'])
+ self.assertEqual(cmd_one, FAKE_CMD_ONE)
+
+ # Load another command group
+ mgr.add_command_group('latin')
+
+ # Find a new command
+ cmd_alpha, name, args = mgr.find_command(['alpha'])
+ self.assertEqual(cmd_alpha, FAKE_CMD_ALPHA)
+
+ # Ensure that the original commands were not overwritten
+ cmd_two, name, args = mgr.find_command(['two'])
+ self.assertEqual(cmd_two, FAKE_CMD_TWO)
diff --git a/tests/test_shell.py b/tests/test_shell.py
index ac634c32..d259785f 100644
--- a/tests/test_shell.py
+++ b/tests/test_shell.py
@@ -108,6 +108,30 @@ class TestShell(utils.TestCase):
default_args["image_api_version"])
+class TestShellHelp(TestShell):
+ """Test the deferred help flag"""
+ def setUp(self):
+ super(TestShellHelp, self).setUp()
+ self.orig_env, os.environ = os.environ, {}
+
+ def tearDown(self):
+ super(TestShellHelp, self).tearDown()
+ os.environ = self.orig_env
+
+ def test_help_options(self):
+ flag = "-h list server"
+ kwargs = {
+ "deferred_help": True,
+ }
+ with mock.patch("openstackclient.shell.OpenStackShell.initialize_app",
+ self.app):
+ _shell, _cmd = make_shell(), flag
+ fake_execute(_shell, _cmd)
+
+ self.assertEqual(_shell.options.deferred_help,
+ kwargs["deferred_help"])
+
+
class TestShellPasswordAuth(TestShell):
def setUp(self):
super(TestShellPasswordAuth, self).setUp()