From 5011d51f31fa83263e939d21aaa5f47702a88ee6 Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Fri, 4 Jul 2014 11:58:05 +1000 Subject: [PATCH] Test that tenant list function can use auth_url Listing tenants can be done on the auth URL because it is often needed to be performed with an unscoped token. The behaviour is not tested though so add a test to cover it. Change-Id: Ic14d54f0f1d8cca2c3a5a6a6da7465c703773aa0 --- keystoneclient/tests/v2_0/test_tenants.py | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/keystoneclient/tests/v2_0/test_tenants.py b/keystoneclient/tests/v2_0/test_tenants.py index 7576041cf..e52e2381c 100644 --- a/keystoneclient/tests/v2_0/test_tenants.py +++ b/keystoneclient/tests/v2_0/test_tenants.py @@ -15,7 +15,9 @@ import uuid import httpretty from keystoneclient import exceptions +from keystoneclient import fixture from keystoneclient.tests.v2_0 import utils +from keystoneclient.v2_0 import client from keystoneclient.v2_0 import tenants from keystoneclient.v2_0 import users @@ -345,3 +347,38 @@ class TenantTests(utils.TestCase): self.assertEqual(set([user_id1, user_id2]), set([u.id for u in user_objs])) + + @httpretty.activate + def test_list_tenants_use_admin_url(self): + self.stub_url(httpretty.GET, ['tenants'], json=self.TEST_TENANTS) + + self.assertEqual(self.TEST_URL, self.client.management_url) + + tenant_list = self.client.tenants.list() + [self.assertIsInstance(t, tenants.Tenant) for t in tenant_list] + + self.assertEqual(len(self.TEST_TENANTS['tenants']['values']), + len(tenant_list)) + + @httpretty.activate + def test_list_tenants_fallback_to_auth_url(self): + new_auth_url = 'http://keystone.test:5000/v2.0' + + token = fixture.V2Token(token_id=self.TEST_TOKEN, + user_name=self.TEST_USER, + user_id=self.TEST_USER_ID) + + self.stub_auth(base_url=new_auth_url, json=token) + self.stub_url(httpretty.GET, ['tenants'], base_url=new_auth_url, + json=self.TEST_TENANTS) + + c = client.Client(username=self.TEST_USER, + auth_url=new_auth_url, + password=uuid.uuid4().hex) + + self.assertIsNone(c.management_url) + tenant_list = c.tenants.list() + [self.assertIsInstance(t, tenants.Tenant) for t in tenant_list] + + self.assertEqual(len(self.TEST_TENANTS['tenants']['values']), + len(tenant_list))