summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/common/test_timing.py87
-rw-r--r--openstackclient/tests/identity/v3/test_project.py64
-rw-r--r--openstackclient/tests/network/test_common.py72
-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.py4
-rw-r--r--openstackclient/tests/utils.py5
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: