diff options
Diffstat (limited to 'openstackclient/tests')
| -rw-r--r-- | openstackclient/tests/common/test_timing.py | 87 | ||||
| -rw-r--r-- | openstackclient/tests/identity/v3/test_project.py | 64 | ||||
| -rw-r--r-- | openstackclient/tests/network/test_common.py | 72 | ||||
| -rw-r--r-- | openstackclient/tests/network/v2/__init__.py (renamed from openstackclient/tests/network/v2_0/__init__.py) | 0 | ||||
| -rw-r--r-- | openstackclient/tests/network/v2/test_network.py (renamed from openstackclient/tests/network/v2_0/test_network.py) | 12 | ||||
| -rw-r--r-- | openstackclient/tests/test_shell.py | 4 | ||||
| -rw-r--r-- | openstackclient/tests/utils.py | 5 |
7 files changed, 235 insertions, 9 deletions
diff --git a/openstackclient/tests/common/test_timing.py b/openstackclient/tests/common/test_timing.py new file mode 100644 index 00000000..aa910b91 --- /dev/null +++ b/openstackclient/tests/common/test_timing.py @@ -0,0 +1,87 @@ +# 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. +# + +"""Test Timing pseudo-command""" + +from openstackclient.common import timing +from openstackclient.tests import fakes +from openstackclient.tests import utils + + +timing_url = 'GET http://localhost:5000' +timing_start = 1404802774.872809 +timing_end = 1404802775.724802 + + +class FakeGenericClient(object): + + def __init__(self, **kwargs): + self.auth_token = kwargs['token'] + self.management_url = kwargs['endpoint'] + + +class TestTiming(utils.TestCommand): + + def setUp(self): + super(TestTiming, self).setUp() + + self.app.timing_data = [] + + self.app.client_manager.compute = FakeGenericClient( + endpoint=fakes.AUTH_URL, + token=fakes.AUTH_TOKEN, + ) + + self.app.client_manager.volume = FakeGenericClient( + endpoint=fakes.AUTH_URL, + token=fakes.AUTH_TOKEN, + ) + + # Get the command object to test + self.cmd = timing.Timing(self.app, None) + + def test_timing_list_no_data(self): + arglist = [] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + collist = ('URL', 'Seconds') + self.assertEqual(collist, columns) + datalist = [ + ('Total', 0.0,) + ] + self.assertEqual(datalist, data) + + def test_timing_list(self): + self.app.timing_data = [ + (timing_url, timing_start, timing_end), + ] + + arglist = [] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + columns, data = self.cmd.take_action(parsed_args) + + collist = ('URL', 'Seconds') + self.assertEqual(collist, columns) + timing_sec = timing_end - timing_start + datalist = [ + (timing_url, timing_sec), + ('Total', timing_sec) + ] + self.assertEqual(datalist, data) diff --git a/openstackclient/tests/identity/v3/test_project.py b/openstackclient/tests/identity/v3/test_project.py index e0420a1e..2e7bc54b 100644 --- a/openstackclient/tests/identity/v3/test_project.py +++ b/openstackclient/tests/identity/v3/test_project.py @@ -14,6 +14,7 @@ # import copy +import mock from openstackclient.identity.v3 import project from openstackclient.tests import fakes @@ -172,6 +173,45 @@ class TestProjectCreate(TestProject): ) self.assertEqual(data, datalist) + def test_project_create_domain_no_perms(self): + arglist = [ + '--domain', identity_fakes.domain_id, + identity_fakes.project_name, + ] + verifylist = [ + ('domain', identity_fakes.domain_id), + ('enable', False), + ('disable', False), + ('name', identity_fakes.project_name), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + mocker = mock.Mock() + mocker.return_value = None + + with mock.patch("openstackclient.common.utils.find_resource", mocker): + columns, data = self.cmd.take_action(parsed_args) + + # Set expected values + kwargs = { + 'name': identity_fakes.project_name, + 'domain': identity_fakes.domain_id, + 'description': None, + 'enabled': True, + } + self.projects_mock.create.assert_called_with( + **kwargs + ) + collist = ('description', 'domain_id', 'enabled', 'id', 'name') + self.assertEqual(columns, collist) + datalist = ( + identity_fakes.project_description, + identity_fakes.domain_id, + True, + identity_fakes.project_id, + identity_fakes.project_name, + ) + self.assertEqual(data, datalist) + def test_project_create_enable(self): arglist = [ '--enable', @@ -411,6 +451,30 @@ class TestProjectList(TestProject): ), ) self.assertEqual(tuple(data), datalist) + def test_project_list_domain_no_perms(self): + arglist = [ + '--domain', identity_fakes.domain_id, + ] + verifylist = [ + ('domain', identity_fakes.domain_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + mocker = mock.Mock() + mocker.return_value = None + + with mock.patch("openstackclient.common.utils.find_resource", mocker): + columns, data = self.cmd.take_action(parsed_args) + + self.projects_mock.list.assert_called_with( + domain=identity_fakes.domain_id) + collist = ('ID', 'Name') + self.assertEqual(columns, collist) + datalist = (( + identity_fakes.project_id, + identity_fakes.project_name, + ), ) + self.assertEqual(tuple(data), datalist) + class TestProjectSet(TestProject): diff --git a/openstackclient/tests/network/test_common.py b/openstackclient/tests/network/test_common.py new file mode 100644 index 00000000..b30fdfcb --- /dev/null +++ b/openstackclient/tests/network/test_common.py @@ -0,0 +1,72 @@ +# 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 exceptions +from openstackclient.network import common +from openstackclient.tests import utils + +RESOURCE = 'resource' +RESOURCES = 'resources' +NAME = 'matrix' +ID = 'Fishburne' + + +class TestFind(utils.TestCase): + def setUp(self): + super(TestFind, self).setUp() + self.mock_client = mock.Mock() + self.list_resources = mock.Mock() + self.mock_client.list_resources = self.list_resources + self.matrix = {'id': ID} + + def test_name(self): + self.list_resources.return_value = {RESOURCES: [self.matrix]} + + result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME) + + self.assertEqual(ID, result) + self.list_resources.assert_called_with(fields='id', name=NAME) + + def test_id(self): + self.list_resources.side_effect = [{RESOURCES: []}, + {RESOURCES: [self.matrix]}] + + result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME) + + self.assertEqual(ID, result) + self.list_resources.assert_called_with(fields='id', id=NAME) + + def test_nameo(self): + self.list_resources.return_value = {RESOURCES: [self.matrix]} + + result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME, + name_attr='nameo') + + self.assertEqual(ID, result) + self.list_resources.assert_called_with(fields='id', nameo=NAME) + + def test_dups(self): + dup = {'id': 'Larry'} + self.list_resources.return_value = {RESOURCES: [self.matrix, dup]} + + self.assertRaises(exceptions.CommandError, common.find, + self.mock_client, RESOURCE, RESOURCES, NAME) + + def test_nada(self): + self.list_resources.side_effect = [{RESOURCES: []}, + {RESOURCES: []}] + + self.assertRaises(exceptions.CommandError, common.find, + self.mock_client, RESOURCE, RESOURCES, NAME) diff --git a/openstackclient/tests/network/v2_0/__init__.py b/openstackclient/tests/network/v2/__init__.py index e69de29b..e69de29b 100644 --- a/openstackclient/tests/network/v2_0/__init__.py +++ b/openstackclient/tests/network/v2/__init__.py diff --git a/openstackclient/tests/network/v2_0/test_network.py b/openstackclient/tests/network/v2/test_network.py index ef7d24ee..08b61a0a 100644 --- a/openstackclient/tests/network/v2_0/test_network.py +++ b/openstackclient/tests/network/v2/test_network.py @@ -15,7 +15,7 @@ import copy import mock from openstackclient.common import exceptions -from openstackclient.network.v2_0 import network +from openstackclient.network.v2 import network from openstackclient.tests.network import common RESOURCE = 'network' @@ -49,7 +49,7 @@ class TestCreateNetwork(common.TestNetworkBase): cmd = network.CreateNetwork(self.app, self.namespace) parsed_args = self.check_parser(cmd, arglist, verifylist) - result = cmd.take_action(parsed_args) + result = list(cmd.take_action(parsed_args)) mocker.assert_called_with({ RESOURCE: { @@ -75,7 +75,7 @@ class TestCreateNetwork(common.TestNetworkBase): cmd = network.CreateNetwork(self.app, self.namespace) parsed_args = self.check_parser(cmd, arglist, verifylist) - result = cmd.take_action(parsed_args) + result = list(cmd.take_action(parsed_args)) mocker.assert_called_with({ RESOURCE: { @@ -102,7 +102,7 @@ class TestCreateNetwork(common.TestNetworkBase): cmd = network.CreateNetwork(self.app, self.namespace) parsed_args = self.check_parser(cmd, arglist, verifylist) - result = cmd.take_action(parsed_args) + result = list(cmd.take_action(parsed_args)) mocker.assert_called_with({ RESOURCE: { @@ -298,7 +298,7 @@ class TestShowNetwork(common.TestNetworkBase): cmd = network.ShowNetwork(self.app, self.namespace) parsed_args = self.check_parser(cmd, arglist, verifylist) - result = cmd.take_action(parsed_args) + result = list(cmd.take_action(parsed_args)) mocker.assert_called_with(FAKE_ID) self.assertEqual(FILTERED, result) @@ -313,7 +313,7 @@ class TestShowNetwork(common.TestNetworkBase): cmd = network.ShowNetwork(self.app, self.namespace) parsed_args = self.check_parser(cmd, arglist, verifylist) - result = cmd.take_action(parsed_args) + result = list(cmd.take_action(parsed_args)) mocker.assert_called_with(FAKE_ID) self.assertEqual(FILTERED, result) diff --git a/openstackclient/tests/test_shell.py b/openstackclient/tests/test_shell.py index dfb8021a..c180289e 100644 --- a/openstackclient/tests/test_shell.py +++ b/openstackclient/tests/test_shell.py @@ -39,13 +39,13 @@ DEFAULT_COMPUTE_API_VERSION = "2" DEFAULT_IDENTITY_API_VERSION = "2.0" DEFAULT_IMAGE_API_VERSION = "v2" DEFAULT_VOLUME_API_VERSION = "1" -DEFAULT_NETWORK_API_VERSION = "2.0" +DEFAULT_NETWORK_API_VERSION = "2" LIB_COMPUTE_API_VERSION = "2" LIB_IDENTITY_API_VERSION = "2.0" LIB_IMAGE_API_VERSION = "1" LIB_VOLUME_API_VERSION = "1" -LIB_NETWORK_API_VERSION = "2.0" +LIB_NETWORK_API_VERSION = "2" def make_shell(): diff --git a/openstackclient/tests/utils.py b/openstackclient/tests/utils.py index 3755fa26..38d47250 100644 --- a/openstackclient/tests/utils.py +++ b/openstackclient/tests/utils.py @@ -81,7 +81,10 @@ class TestCommand(TestCase): def check_parser(self, cmd, args, verify_args): cmd_parser = cmd.get_parser('check_parser') - parsed_args = cmd_parser.parse_args(args) + try: + parsed_args = cmd_parser.parse_args(args) + except SystemExit: + raise Exception("Argument parse failed") for av in verify_args: attr, value = av if attr: |
