summaryrefslogtreecommitdiff
path: root/keystoneclient
diff options
context:
space:
mode:
authorNisha Yadav <ynisha11@gmail.com>2016-06-14 21:47:07 +0530
committerNisha Yadav <ynisha11@gmail.com>2016-06-20 19:28:56 +0530
commit15a93d8bfba6e24185e0105b234e5c8db6e5a6ec (patch)
tree627b93d8c418336077e0bce3fd99abae5a3b0f9a /keystoneclient
parent79db63ef1166afb2df2d08a6df0055d4eaaa7e48 (diff)
downloadpython-keystoneclient-15a93d8bfba6e24185e0105b234e5c8db6e5a6ec.tar.gz
Add domain functional tests
Adds functional tests for domains. For now, the tests are created under a single class. Once we have a gate that runs against LDAP, we will create a class that only contains readonly tests and a tox call for it (e.g tox -e functional-readonly). Change-Id: I74bff2728c09e6aafaced97a7836f51e58a81786
Diffstat (limited to 'keystoneclient')
-rw-r--r--keystoneclient/tests/functional/v3/client_fixtures.py15
-rw-r--r--keystoneclient/tests/functional/v3/test_domains.py97
2 files changed, 112 insertions, 0 deletions
diff --git a/keystoneclient/tests/functional/v3/client_fixtures.py b/keystoneclient/tests/functional/v3/client_fixtures.py
index 809fd0f..56ecaf6 100644
--- a/keystoneclient/tests/functional/v3/client_fixtures.py
+++ b/keystoneclient/tests/functional/v3/client_fixtures.py
@@ -53,3 +53,18 @@ class Group(Base):
'domain': self.domain_id}
self.entity = self.client.groups.create(**self.ref)
self.addCleanup(self.client.groups.delete, self.entity)
+
+
+class Domain(Base):
+
+ def setUp(self):
+ super(Domain, self).setUp()
+
+ self.ref = {'name': RESOURCE_NAME_PREFIX + uuid.uuid4().hex,
+ 'description': uuid.uuid4().hex,
+ 'enabled': True}
+ self.entity = self.client.domains.create(**self.ref)
+
+ # Only disabled domains can be deleted
+ self.addCleanup(self.client.domains.delete, self.entity)
+ self.addCleanup(self.client.domains.update, self.entity, enabled=False)
diff --git a/keystoneclient/tests/functional/v3/test_domains.py b/keystoneclient/tests/functional/v3/test_domains.py
new file mode 100644
index 0000000..cd87f3f
--- /dev/null
+++ b/keystoneclient/tests/functional/v3/test_domains.py
@@ -0,0 +1,97 @@
+# 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 uuid
+
+from keystoneauth1.exceptions import http
+from keystoneclient.tests.functional import base
+from keystoneclient.tests.functional.v3 import client_fixtures as fixtures
+
+
+class DomainsTestCase(base.V3ClientTestCase):
+
+ def check_domain(self, domain, domain_ref=None):
+ self.assertIsNotNone(domain.id)
+ self.assertIn('self', domain.links)
+ self.assertIn('/domains/' + domain.id, domain.links['self'])
+
+ if domain_ref:
+ self.assertEqual(domain_ref['name'], domain.name)
+ self.assertEqual(domain_ref['enabled'], domain.enabled)
+
+ # There is no guarantee description is present in domain
+ if hasattr(domain_ref, 'description'):
+ self.assertEqual(domain_ref['description'], domain.description)
+ else:
+ # Only check remaining mandatory attributes
+ self.assertIsNotNone(domain.name)
+ self.assertIsNotNone(domain.enabled)
+
+ def test_create_domain(self):
+ domain_ref = {
+ 'name': fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,
+ 'description': uuid.uuid4().hex,
+ 'enabled': True}
+ domain = self.client.domains.create(**domain_ref)
+ self.check_domain(domain, domain_ref)
+
+ # Only disabled domains can be deleted
+ self.addCleanup(self.client.domains.delete, domain)
+ self.addCleanup(self.client.domains.update, domain, enabled=False)
+
+ def test_get_domain(self):
+ domain_id = self.project_domain_id
+ domain_ret = self.client.domains.get(domain_id)
+ self.check_domain(domain_ret)
+
+ def test_list_domains(self):
+ domain_one = fixtures.Domain(self.client, self.project_domain_id)
+ self.useFixture(domain_one)
+
+ domain_two = fixtures.Domain(self.client, self.project_domain_id)
+ self.useFixture(domain_two)
+
+ domains = self.client.domains.list()
+
+ # All domains are valid
+ for domain in domains:
+ self.check_domain(domain)
+
+ self.assertIn(domain_one.entity, domains)
+ self.assertIn(domain_two.entity, domains)
+
+ def test_update_domain(self):
+ domain = fixtures.Domain(self.client, self.project_domain_id)
+ self.useFixture(domain)
+
+ new_description = uuid.uuid4().hex
+ domain_ret = self.client.domains.update(domain.id,
+ description=new_description)
+
+ domain.ref.update({'description': new_description})
+ self.check_domain(domain_ret, domain.ref)
+
+ def test_delete_domain(self):
+ domain = self.client.domains.create(name=uuid.uuid4().hex,
+ description=uuid.uuid4().hex,
+ enabled=True)
+
+ # Only disabled domains can be deleted
+ self.assertRaises(http.Forbidden,
+ self.client.domains.delete,
+ domain.id)
+
+ self.client.domains.update(domain, enabled=False)
+ self.client.domains.delete(domain.id)
+ self.assertRaises(http.NotFound,
+ self.client.domains.get,
+ domain.id)