summaryrefslogtreecommitdiff
path: root/keystoneclient/tests/functional
diff options
context:
space:
mode:
authorNisha Yadav <ynisha11@gmail.com>2016-07-07 23:10:08 +0530
committerNisha Yadav <ynisha11@gmail.com>2016-07-28 13:16:43 +0000
commit5486df75cca8e7c3ee8827c37268215ccf32aa1c (patch)
tree37d96ff8449101899b688d892f169cc73404cce7 /keystoneclient/tests/functional
parent325c464b4988967d94c4a2bc1f94411b55d30b60 (diff)
downloadpython-keystoneclient-5486df75cca8e7c3ee8827c37268215ccf32aa1c.tar.gz
Add region functional tests
Adds functional tests for regions. Change-Id: I809cd9ea320f3fda7348a110bd30fff1c411fcae
Diffstat (limited to 'keystoneclient/tests/functional')
-rw-r--r--keystoneclient/tests/functional/v3/client_fixtures.py15
-rw-r--r--keystoneclient/tests/functional/v3/test_regions.py85
2 files changed, 100 insertions, 0 deletions
diff --git a/keystoneclient/tests/functional/v3/client_fixtures.py b/keystoneclient/tests/functional/v3/client_fixtures.py
index 7f1fa76..e8f444d 100644
--- a/keystoneclient/tests/functional/v3/client_fixtures.py
+++ b/keystoneclient/tests/functional/v3/client_fixtures.py
@@ -141,3 +141,18 @@ class Policy(Base):
'type': uuid.uuid4().hex}
self.entity = self.client.policies.create(**self.ref)
self.addCleanup(self.client.policies.delete, self.entity)
+
+
+class Region(Base):
+
+ def __init__(self, client, parent_region=None):
+ super(Region, self).__init__(client)
+ self.parent_region = parent_region
+
+ def setUp(self):
+ super(Region, self).setUp()
+
+ self.ref = {'description': uuid.uuid4().hex,
+ 'parent_region': self.parent_region}
+ self.entity = self.client.regions.create(**self.ref)
+ self.addCleanup(self.client.regions.delete, self.entity)
diff --git a/keystoneclient/tests/functional/v3/test_regions.py b/keystoneclient/tests/functional/v3/test_regions.py
new file mode 100644
index 0000000..51f9386
--- /dev/null
+++ b/keystoneclient/tests/functional/v3/test_regions.py
@@ -0,0 +1,85 @@
+# 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 RegionsTestCase(base.V3ClientTestCase):
+
+ def check_region(self, region, region_ref=None):
+ self.assertIsNotNone(region.id)
+ self.assertIn('self', region.links)
+ self.assertIn('/regions/' + region.id, region.links['self'])
+
+ # There is no guarantee the below attributes are present in region
+ if hasattr(region_ref, 'description'):
+ self.assertEqual(region_ref['description'], region.description)
+ if hasattr(region_ref, 'parent_region'):
+ self.assertEqual(
+ region_ref['parent_region'],
+ region.parent_region)
+
+ def test_create_region(self):
+ region_ref = {'description': uuid.uuid4().hex}
+
+ region = self.client.regions.create(**region_ref)
+ self.addCleanup(self.client.regions.delete, region)
+ self.check_region(region, region_ref)
+
+ def test_get_region(self):
+ region = fixtures.Region(self.client)
+ self.useFixture(region)
+
+ region_ret = self.client.regions.get(region.id)
+ self.check_region(region_ret, region.ref)
+
+ def test_list_regions(self):
+ region_one = fixtures.Region(self.client)
+ self.useFixture(region_one)
+
+ region_two = fixtures.Region(self.client, parent_region=region_one.id)
+ self.useFixture(region_two)
+
+ regions = self.client.regions.list()
+
+ # All regions are valid
+ for region in regions:
+ self.check_region(region)
+
+ self.assertIn(region_one.entity, regions)
+ self.assertIn(region_two.entity, regions)
+
+ def test_update_region(self):
+ parent = fixtures.Region(self.client)
+ self.useFixture(parent)
+
+ region = fixtures.Region(self.client)
+ self.useFixture(region)
+
+ new_description = uuid.uuid4().hex
+ region_ret = self.client.regions.update(region.id,
+ description=new_description,
+ parent_region=parent.id)
+ self.check_region(region_ret, region.ref)
+
+ def test_delete_region(self):
+ region = self.client.regions.create()
+
+ self.client.regions.delete(region.id)
+ self.assertRaises(http.NotFound,
+ self.client.regions.get,
+ region.id)