summaryrefslogtreecommitdiff
path: root/glanceclient/tests/functional/v1/test_readonly_glance.py
diff options
context:
space:
mode:
Diffstat (limited to 'glanceclient/tests/functional/v1/test_readonly_glance.py')
-rw-r--r--glanceclient/tests/functional/v1/test_readonly_glance.py73
1 files changed, 73 insertions, 0 deletions
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')