# Copyright 2015 Mirantis Inc. # All Rights Reserved. # # 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 import ddt from manilaclient.tests.functional import base @ddt.ddt class ManilaClientTestCommonReadOnly(base.BaseTestCase): @ddt.data('admin', 'user') def test_manila_version(self, role): self.clients[role].manila('', flags='--version') @ddt.data('admin', 'user') def test_help(self, role): help_text = self.clients[role].manila('help') lines = help_text.split('\n') self.assertFirstLineStartsWith(lines, 'usage: manila') commands = [] cmds_start = lines.index('Positional arguments:') try: # TODO(gouthamr): Drop when py3.10 becomes min supported version cmds_end = lines.index('Optional arguments:') except ValueError: cmds_end = lines.index('Options:') command_pattern = re.compile(r'^ {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 = set(( 'absolute-limits', 'list', 'help', 'quota-show', 'access-list', 'snapshot-list', 'access-allow', 'access-deny', 'share-network-list', 'security-service-list')) self.assertFalse(wanted_commands - commands) @ddt.data('admin', 'user') def test_credentials(self, role): self.clients[role].manila('credentials') @ddt.data('admin', 'user') def test_list_extensions(self, role): roles = self.parser.listing( self.clients[role].manila('list-extensions')) self.assertTableStruct(roles, ['Name', 'Summary', 'Alias', 'Updated']) @ddt.data('admin', 'user') def test_endpoints(self, role): self.clients[role].manila('endpoints')