diff options
Diffstat (limited to 'glanceclient')
-rw-r--r-- | glanceclient/tests/functional/base.py | 3 | ||||
-rw-r--r-- | glanceclient/tests/functional/v1/__init__.py | 0 | ||||
-rw-r--r-- | glanceclient/tests/functional/v1/test_readonly_glance.py | 73 | ||||
-rw-r--r-- | glanceclient/tests/functional/v2/__init__.py | 0 | ||||
-rw-r--r-- | glanceclient/tests/functional/v2/test_http_headers.py (renamed from glanceclient/tests/functional/test_http_headers.py) | 0 | ||||
-rw-r--r-- | glanceclient/tests/functional/v2/test_readonly_glance.py (renamed from glanceclient/tests/functional/test_readonly_glance.py) | 15 |
6 files changed, 75 insertions, 16 deletions
diff --git a/glanceclient/tests/functional/base.py b/glanceclient/tests/functional/base.py index 0efc079..578dc39 100644 --- a/glanceclient/tests/functional/base.py +++ b/glanceclient/tests/functional/base.py @@ -48,9 +48,10 @@ class ClientTestBase(base.ClientTestBase): def _get_clients(self): self.creds = credentials().get_auth_args() + venv_name = os.environ.get('OS_TESTENV_NAME', 'functional') cli_dir = os.environ.get( 'OS_GLANCECLIENT_EXEC_DIR', - os.path.join(os.path.abspath('.'), '.tox/functional/bin')) + os.path.join(os.path.abspath('.'), '.tox/%s/bin' % venv_name)) return base.CLIClient( username=self.creds['username'], diff --git a/glanceclient/tests/functional/v1/__init__.py b/glanceclient/tests/functional/v1/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/glanceclient/tests/functional/v1/__init__.py diff --git a/glanceclient/tests/functional/v1/test_readonly_glance.py b/glanceclient/tests/functional/v1/test_readonly_glance.py new file mode 100644 index 0000000..122c61b --- /dev/null +++ b/glanceclient/tests/functional/v1/test_readonly_glance.py @@ -0,0 +1,73 @@ +# 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 re + +from tempest.lib import exceptions + +from glanceclient.tests.functional import base + + +class SimpleReadOnlyGlanceClientTest(base.ClientTestBase): + + """Read only functional python-glanceclient tests. + + This only exercises client commands that are read only. + """ + + def test_list_v1(self): + out = self.glance('--os-image-api-version 1 image-list') + endpoints = self.parser.listing(out) + self.assertTableStruct(endpoints, [ + 'ID', 'Name', 'Disk Format', 'Container Format', + 'Size', 'Status']) + + def test_fake_action(self): + self.assertRaises(exceptions.CommandFailed, + self.glance, + 'this-does-not-exist') + + def test_member_list_v1(self): + tenant_name = '--tenant-id %s' % self.creds['project_name'] + out = self.glance('--os-image-api-version 1 member-list', + params=tenant_name) + endpoints = self.parser.listing(out) + self.assertTableStruct(endpoints, + ['Image ID', 'Member ID', 'Can Share']) + + def test_help(self): + help_text = self.glance('--os-image-api-version 1 help') + lines = help_text.split('\n') + self.assertFirstLineStartsWith(lines, 'usage: glance') + + commands = [] + cmds_start = lines.index('Positional arguments:') + cmds_end = lines.index('Optional arguments:') + command_pattern = re.compile('^ {4}([a-z0-9\-\_]+)') + for line in lines[cmds_start:cmds_end]: + match = command_pattern.match(line) + if match: + commands.append(match.group(1)) + commands = set(commands) + wanted_commands = {'bash-completion', 'help', + 'image-create', 'image-delete', + 'image-download', 'image-list', + 'image-show', 'image-update', + 'member-create', 'member-delete', + 'member-list'} + self.assertEqual(commands, wanted_commands) + + def test_version(self): + self.glance('', flags='--version') + + def test_debug_list(self): + self.glance('--os-image-api-version 1 image-list', flags='--debug') diff --git a/glanceclient/tests/functional/v2/__init__.py b/glanceclient/tests/functional/v2/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/glanceclient/tests/functional/v2/__init__.py diff --git a/glanceclient/tests/functional/test_http_headers.py b/glanceclient/tests/functional/v2/test_http_headers.py index 1596444..1596444 100644 --- a/glanceclient/tests/functional/test_http_headers.py +++ b/glanceclient/tests/functional/v2/test_http_headers.py diff --git a/glanceclient/tests/functional/test_readonly_glance.py b/glanceclient/tests/functional/v2/test_readonly_glance.py index ccd49d6..c024303 100644 --- a/glanceclient/tests/functional/test_readonly_glance.py +++ b/glanceclient/tests/functional/v2/test_readonly_glance.py @@ -24,13 +24,6 @@ class SimpleReadOnlyGlanceClientTest(base.ClientTestBase): This only exercises client commands that are read only. """ - def test_list_v1(self): - out = self.glance('--os-image-api-version 1 image-list') - endpoints = self.parser.listing(out) - self.assertTableStruct(endpoints, [ - 'ID', 'Name', 'Disk Format', 'Container Format', - 'Size', 'Status']) - def test_list_v2(self): out = self.glance('--os-image-api-version 2 image-list') endpoints = self.parser.listing(out) @@ -41,14 +34,6 @@ class SimpleReadOnlyGlanceClientTest(base.ClientTestBase): self.glance, 'this-does-not-exist') - def test_member_list_v1(self): - tenant_name = '--tenant-id %s' % self.creds['project_name'] - out = self.glance('--os-image-api-version 1 member-list', - params=tenant_name) - endpoints = self.parser.listing(out) - self.assertTableStruct(endpoints, - ['Image ID', 'Member ID', 'Can Share']) - def test_member_list_v2(self): try: # NOTE(flwang): If set disk-format and container-format, Jenkins |