summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-04-30 03:16:20 +0000
committerGerrit Code Review <review@openstack.org>2015-04-30 03:16:20 +0000
commit634004f33e184fc8b4205474434342c01404eb57 (patch)
tree82cc082896cc23bd1902bcc2114b875d9fb548b1 /openstackclient/tests
parent9b9c396d8f5db83710126faf5bec158a26af2caa (diff)
parent2ed0e220490da5c6ee8f34754d70540890b17921 (diff)
downloadpython-openstackclient-634004f33e184fc8b4205474434342c01404eb57.tar.gz
Merge "Add parent field to project creation"
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/identity/v3/fakes.py10
-rw-r--r--openstackclient/tests/identity/v3/test_project.py100
2 files changed, 110 insertions, 0 deletions
diff --git a/openstackclient/tests/identity/v3/fakes.py b/openstackclient/tests/identity/v3/fakes.py
index 4c7ef6c1..234a3ccf 100644
--- a/openstackclient/tests/identity/v3/fakes.py
+++ b/openstackclient/tests/identity/v3/fakes.py
@@ -135,6 +135,16 @@ REGION = {
'links': base_url + 'regions/' + region_id,
}
+PROJECT_WITH_PARENT = {
+ 'id': project_id + '-with-parent',
+ 'name': project_name + ' and their parents',
+ 'description': project_description + ' plus another four',
+ 'enabled': True,
+ 'domain_id': domain_id,
+ 'parent_id': project_id,
+ 'links': base_url + 'projects/' + (project_id + '-with-parent'),
+}
+
role_id = 'r1'
role_name = 'roller'
diff --git a/openstackclient/tests/identity/v3/test_project.py b/openstackclient/tests/identity/v3/test_project.py
index 874908da..ec50da0c 100644
--- a/openstackclient/tests/identity/v3/test_project.py
+++ b/openstackclient/tests/identity/v3/test_project.py
@@ -16,6 +16,7 @@
import copy
import mock
+from openstackclient.common import exceptions
from openstackclient.identity.v3 import project
from openstackclient.tests import fakes
from openstackclient.tests.identity.v3 import fakes as identity_fakes
@@ -60,6 +61,7 @@ class TestProjectCreate(TestProject):
identity_fakes.project_name,
]
verifylist = [
+ ('parent', None),
('enable', False),
('disable', False),
('name', identity_fakes.project_name),
@@ -75,6 +77,7 @@ class TestProjectCreate(TestProject):
'domain': None,
'description': None,
'enabled': True,
+ 'parent': None,
}
# ProjectManager.create(name=, domain=, description=,
# enabled=, **kwargs)
@@ -103,6 +106,7 @@ class TestProjectCreate(TestProject):
('enable', False),
('disable', False),
('name', identity_fakes.project_name),
+ ('parent', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -115,6 +119,7 @@ class TestProjectCreate(TestProject):
'domain': None,
'description': 'new desc',
'enabled': True,
+ 'parent': None,
}
# ProjectManager.create(name=, domain=, description=,
# enabled=, **kwargs)
@@ -143,6 +148,7 @@ class TestProjectCreate(TestProject):
('enable', False),
('disable', False),
('name', identity_fakes.project_name),
+ ('parent', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -155,6 +161,7 @@ class TestProjectCreate(TestProject):
'domain': identity_fakes.domain_id,
'description': None,
'enabled': True,
+ 'parent': None,
}
# ProjectManager.create(name=, domain=, description=,
# enabled=, **kwargs)
@@ -183,6 +190,7 @@ class TestProjectCreate(TestProject):
('enable', False),
('disable', False),
('name', identity_fakes.project_name),
+ ('parent', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
mocker = mock.Mock()
@@ -197,6 +205,7 @@ class TestProjectCreate(TestProject):
'domain': identity_fakes.domain_id,
'description': None,
'enabled': True,
+ 'parent': None,
}
self.projects_mock.create.assert_called_with(
**kwargs
@@ -221,6 +230,7 @@ class TestProjectCreate(TestProject):
('enable', True),
('disable', False),
('name', identity_fakes.project_name),
+ ('parent', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -233,6 +243,7 @@ class TestProjectCreate(TestProject):
'domain': None,
'description': None,
'enabled': True,
+ 'parent': None,
}
# ProjectManager.create(name=, domain=, description=,
# enabled=, **kwargs)
@@ -260,6 +271,7 @@ class TestProjectCreate(TestProject):
('enable', False),
('disable', True),
('name', identity_fakes.project_name),
+ ('parent', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -272,6 +284,7 @@ class TestProjectCreate(TestProject):
'domain': None,
'description': None,
'enabled': False,
+ 'parent': None,
}
# ProjectManager.create(name=, domain=,
# description=, enabled=, **kwargs)
@@ -311,6 +324,7 @@ class TestProjectCreate(TestProject):
'domain': None,
'description': None,
'enabled': True,
+ 'parent': None,
'fee': 'fi',
'fo': 'fum',
}
@@ -331,6 +345,92 @@ class TestProjectCreate(TestProject):
)
self.assertEqual(datalist, data)
+ def test_project_create_parent(self):
+ self.projects_mock.get.return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy(identity_fakes.PROJECT),
+ loaded=True,
+ )
+ self.projects_mock.create.return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy(identity_fakes.PROJECT_WITH_PARENT),
+ loaded=True,
+ )
+
+ arglist = [
+ '--domain', identity_fakes.PROJECT_WITH_PARENT['domain_id'],
+ '--parent', identity_fakes.PROJECT['name'],
+ identity_fakes.PROJECT_WITH_PARENT['name'],
+ ]
+ verifylist = [
+ ('domain', identity_fakes.PROJECT_WITH_PARENT['domain_id']),
+ ('parent', identity_fakes.PROJECT['name']),
+ ('enable', False),
+ ('disable', False),
+ ('name', identity_fakes.PROJECT_WITH_PARENT['name']),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ kwargs = {
+ 'name': identity_fakes.PROJECT_WITH_PARENT['name'],
+ 'domain': identity_fakes.PROJECT_WITH_PARENT['domain_id'],
+ 'parent': identity_fakes.PROJECT['id'],
+ 'description': None,
+ 'enabled': True,
+ }
+
+ self.projects_mock.create.assert_called_with(
+ **kwargs
+ )
+
+ collist = (
+ 'description',
+ 'domain_id',
+ 'enabled',
+ 'id',
+ 'name',
+ 'parent_id',
+ )
+ self.assertEqual(columns, collist)
+ datalist = (
+ identity_fakes.PROJECT_WITH_PARENT['description'],
+ identity_fakes.PROJECT_WITH_PARENT['domain_id'],
+ identity_fakes.PROJECT_WITH_PARENT['enabled'],
+ identity_fakes.PROJECT_WITH_PARENT['id'],
+ identity_fakes.PROJECT_WITH_PARENT['name'],
+ identity_fakes.PROJECT['id'],
+ )
+ self.assertEqual(data, datalist)
+
+ def test_project_create_invalid_parent(self):
+ self.projects_mock.resource_class.__name__ = 'Project'
+ self.projects_mock.get.side_effect = exceptions.NotFound(
+ 'Invalid parent')
+ self.projects_mock.find.side_effect = exceptions.NotFound(
+ 'Invalid parent')
+
+ arglist = [
+ '--domain', identity_fakes.domain_name,
+ '--parent', 'invalid',
+ identity_fakes.project_name,
+ ]
+ verifylist = [
+ ('domain', identity_fakes.domain_name),
+ ('parent', 'invalid'),
+ ('enable', False),
+ ('disable', False),
+ ('name', identity_fakes.project_name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.assertRaises(
+ exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args,
+ )
+
class TestProjectDelete(TestProject):