summaryrefslogtreecommitdiff
path: root/keystoneclient/tests/v2_0/test_tenants.py
diff options
context:
space:
mode:
Diffstat (limited to 'keystoneclient/tests/v2_0/test_tenants.py')
-rw-r--r--keystoneclient/tests/v2_0/test_tenants.py287
1 files changed, 287 insertions, 0 deletions
diff --git a/keystoneclient/tests/v2_0/test_tenants.py b/keystoneclient/tests/v2_0/test_tenants.py
new file mode 100644
index 0000000..95859d4
--- /dev/null
+++ b/keystoneclient/tests/v2_0/test_tenants.py
@@ -0,0 +1,287 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# 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 httpretty
+
+from keystoneclient import exceptions
+from keystoneclient.tests.v2_0 import utils
+from keystoneclient.v2_0 import tenants
+
+
+class TenantTests(utils.TestCase):
+ def setUp(self):
+ super(TenantTests, self).setUp()
+ self.TEST_TENANTS = {
+ "tenants": {
+ "values": [
+ {
+ "enabled": True,
+ "description": "A description change!",
+ "name": "invisible_to_admin",
+ "id": 3,
+ },
+ {
+ "enabled": True,
+ "description": "None",
+ "name": "demo",
+ "id": 2,
+ },
+ {
+ "enabled": True,
+ "description": "None",
+ "name": "admin",
+ "id": 1,
+ },
+ {
+ "extravalue01": "metadata01",
+ "enabled": True,
+ "description": "For testing extras",
+ "name": "test_extras",
+ "id": 4,
+ }
+ ],
+ "links": [],
+ },
+ }
+
+ @httpretty.activate
+ def test_create(self):
+ req_body = {
+ "tenant": {
+ "name": "tenantX",
+ "description": "Like tenant 9, but better.",
+ "enabled": True,
+ "extravalue01": "metadata01",
+ },
+ }
+ resp_body = {
+ "tenant": {
+ "name": "tenantX",
+ "enabled": True,
+ "id": 4,
+ "description": "Like tenant 9, but better.",
+ "extravalue01": "metadata01",
+ }
+ }
+ self.stub_url(httpretty.POST, ['tenants'], json=resp_body)
+
+ tenant = self.client.tenants.create(
+ req_body['tenant']['name'],
+ req_body['tenant']['description'],
+ req_body['tenant']['enabled'],
+ extravalue01=req_body['tenant']['extravalue01'],
+ name="dont overwrite priors")
+ self.assertTrue(isinstance(tenant, tenants.Tenant))
+ self.assertEqual(tenant.id, 4)
+ self.assertEqual(tenant.name, "tenantX")
+ self.assertEqual(tenant.description, "Like tenant 9, but better.")
+ self.assertEqual(tenant.extravalue01, "metadata01")
+ self.assertRequestBodyIs(json=req_body)
+
+ @httpretty.activate
+ def test_duplicate_create(self):
+ req_body = {
+ "tenant": {
+ "name": "tenantX",
+ "description": "The duplicate tenant.",
+ "enabled": True
+ },
+ }
+ resp_body = {
+ "error": {
+ "message": "Conflict occurred attempting to store project.",
+ "code": 409,
+ "title": "Conflict",
+ }
+ }
+ self.stub_url(httpretty.POST, ['tenants'], status=409, json=resp_body)
+
+ def create_duplicate_tenant():
+ self.client.tenants.create(req_body['tenant']['name'],
+ req_body['tenant']['description'],
+ req_body['tenant']['enabled'])
+
+ self.assertRaises(exceptions.Conflict, create_duplicate_tenant)
+
+ @httpretty.activate
+ def test_delete(self):
+ self.stub_url(httpretty.DELETE, ['tenants', '1'], status=204)
+ self.client.tenants.delete(1)
+
+ @httpretty.activate
+ def test_get(self):
+ resp = {'tenant': self.TEST_TENANTS['tenants']['values'][2]}
+ self.stub_url(httpretty.GET, ['tenants', '1'], json=resp)
+
+ t = self.client.tenants.get(1)
+ self.assertTrue(isinstance(t, tenants.Tenant))
+ self.assertEqual(t.id, 1)
+ self.assertEqual(t.name, 'admin')
+
+ @httpretty.activate
+ def test_list(self):
+ self.stub_url(httpretty.GET, ['tenants'], json=self.TEST_TENANTS)
+
+ tenant_list = self.client.tenants.list()
+ [self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
+
+ @httpretty.activate
+ def test_list_limit(self):
+ self.stub_url(httpretty.GET, ['tenants'], json=self.TEST_TENANTS)
+
+ tenant_list = self.client.tenants.list(limit=1)
+ self.assertQueryStringIs({'limit': ['1']})
+ [self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
+
+ @httpretty.activate
+ def test_list_marker(self):
+ self.stub_url(httpretty.GET, ['tenants'], json=self.TEST_TENANTS)
+
+ tenant_list = self.client.tenants.list(marker=1)
+ self.assertQueryStringIs({'marker': ['1']})
+ [self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
+
+ @httpretty.activate
+ def test_list_limit_marker(self):
+ self.stub_url(httpretty.GET, ['tenants'], json=self.TEST_TENANTS)
+
+ tenant_list = self.client.tenants.list(limit=1, marker=1)
+ self.assertQueryStringIs({'marker': ['1'], 'limit': ['1']})
+ [self.assertTrue(isinstance(t, tenants.Tenant)) for t in tenant_list]
+
+ @httpretty.activate
+ def test_update(self):
+ req_body = {
+ "tenant": {
+ "id": 4,
+ "name": "tenantX",
+ "description": "I changed you!",
+ "enabled": False,
+ "extravalue01": "metadataChanged",
+ #"extraname": "dontoverwrite!",
+ },
+ }
+ resp_body = {
+ "tenant": {
+ "name": "tenantX",
+ "enabled": False,
+ "id": 4,
+ "description": "I changed you!",
+ "extravalue01": "metadataChanged",
+ },
+ }
+
+ self.stub_url(httpretty.POST, ['tenants', '4'], json=resp_body)
+
+ tenant = self.client.tenants.update(
+ req_body['tenant']['id'],
+ req_body['tenant']['name'],
+ req_body['tenant']['description'],
+ req_body['tenant']['enabled'],
+ extravalue01=req_body['tenant']['extravalue01'],
+ name="dont overwrite priors")
+ self.assertTrue(isinstance(tenant, tenants.Tenant))
+ self.assertRequestBodyIs(json=req_body)
+ self.assertEqual(tenant.id, 4)
+ self.assertEqual(tenant.name, "tenantX")
+ self.assertEqual(tenant.description, "I changed you!")
+ self.assertFalse(tenant.enabled)
+ self.assertEqual(tenant.extravalue01, "metadataChanged")
+
+ @httpretty.activate
+ def test_update_empty_description(self):
+ req_body = {
+ "tenant": {
+ "id": 4,
+ "name": "tenantX",
+ "description": "",
+ "enabled": False,
+ },
+ }
+ resp_body = {
+ "tenant": {
+ "name": "tenantX",
+ "enabled": False,
+ "id": 4,
+ "description": "",
+ },
+ }
+ self.stub_url(httpretty.POST, ['tenants', '4'], json=resp_body)
+
+ tenant = self.client.tenants.update(req_body['tenant']['id'],
+ req_body['tenant']['name'],
+ req_body['tenant']['description'],
+ req_body['tenant']['enabled'])
+ self.assertTrue(isinstance(tenant, tenants.Tenant))
+ self.assertRequestBodyIs(json=req_body)
+ self.assertEqual(tenant.id, 4)
+ self.assertEqual(tenant.name, "tenantX")
+ self.assertEqual(tenant.description, "")
+ self.assertFalse(tenant.enabled)
+
+ @httpretty.activate
+ def test_add_user(self):
+ self.stub_url(httpretty.PUT, ['tenants', '4', 'users', 'foo', 'roles',
+ 'OS-KSADM', 'barrr'], status=204)
+
+ self.client.tenants.add_user('4', 'foo', 'barrr')
+
+ @httpretty.activate
+ def test_remove_user(self):
+ self.stub_url(httpretty.DELETE, ['tenants', '4', 'users', 'foo',
+ 'roles', 'OS-KSADM', 'barrr'],
+ status=204)
+
+ self.client.tenants.remove_user('4', 'foo', 'barrr')
+
+ @httpretty.activate
+ def test_tenant_add_user(self):
+ self.stub_url(httpretty.PUT, ['tenants', '4', 'users', 'foo', 'roles',
+ 'OS-KSADM', 'barrr'],
+ status=204)
+
+ req_body = {
+ "tenant": {
+ "id": 4,
+ "name": "tenantX",
+ "description": "I changed you!",
+ "enabled": False,
+ },
+ }
+ # make tenant object with manager
+ tenant = self.client.tenants.resource_class(self.client.tenants,
+ req_body['tenant'])
+ tenant.add_user('foo', 'barrr')
+ self.assertTrue(isinstance(tenant, tenants.Tenant))
+
+ @httpretty.activate
+ def test_tenant_remove_user(self):
+ self.stub_url(httpretty.DELETE, ['tenants', '4', 'users', 'foo',
+ 'roles', 'OS-KSADM', 'barrr'],
+ status=204)
+
+ req_body = {
+ "tenant": {
+ "id": 4,
+ "name": "tenantX",
+ "description": "I changed you!",
+ "enabled": False,
+ },
+ }
+
+ # make tenant object with manager
+ tenant = self.client.tenants.resource_class(self.client.tenants,
+ req_body['tenant'])
+ tenant.remove_user('foo', 'barrr')
+ self.assertTrue(isinstance(tenant, tenants.Tenant))