From 00127ab614174f0f2a7f84769e568e14b6083bd6 Mon Sep 17 00:00:00 2001 From: galstrom21 Date: Tue, 9 Oct 2012 23:32:20 -0500 Subject: Adding handling for get user/tenant by name * /v2.0/tenants?name= * /v2.0/user?name= * added get_tenant_by_name() to tests/test_content_types.py * added get_user_by_name() to tests/test_content_types.py bug 1055763 Change-Id: Id30dc853db12e155238fbb39cef6a081284cb86c --- keystone/identity/core.py | 17 +++++++++++++++++ tests/test_content_types.py | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/keystone/identity/core.py b/keystone/identity/core.py index e0297432..08f599f9 100644 --- a/keystone/identity/core.py +++ b/keystone/identity/core.py @@ -341,6 +341,10 @@ class TenantController(wsgi.Application): def get_all_tenants(self, context, **kw): """Gets a list of all tenants for an admin user.""" + if 'name' in context['query_string']: + return self.get_tenant_by_name( + context, context['query_string'].get('name')) + self.assert_admin(context) tenant_refs = self.identity_api.get_tenants(context) params = { @@ -385,6 +389,11 @@ class TenantController(wsgi.Application): self.assert_admin(context) return {'tenant': self.identity_api.get_tenant(context, tenant_id)} + def get_tenant_by_name(self, context, tenant_name): + self.assert_admin(context) + return {'tenant': self.identity_api.get_tenant_by_name( + context, tenant_name)} + # CRUD Extension def create_tenant(self, context, tenant): tenant_ref = self._normalize_dict(tenant) @@ -463,9 +472,17 @@ class UserController(wsgi.Application): def get_users(self, context): # NOTE(termie): i can't imagine that this really wants all the data # about every single user in the system... + if 'name' in context['query_string']: + return self.get_user_by_name( + context, context['query_string'].get('name')) + self.assert_admin(context) return {'users': self.identity_api.list_users(context)} + def get_user_by_name(self, context, user_name): + self.assert_admin(context) + return {'user': self.identity_api.get_user_by_name(context, user_name)} + # CRUD extension def create_user(self, context, user): user = self._normalize_dict(user) diff --git a/tests/test_content_types.py b/tests/test_content_types.py index ea501c09..95d1256a 100644 --- a/tests/test_content_types.py +++ b/tests/test_content_types.py @@ -430,6 +430,15 @@ class CoreApiTests(object): token=token) self.assertValidTenantResponse(r) + def test_get_tenant_by_name(self): + token = self.get_scoped_token() + r = self.admin_request( + path='/v2.0/tenants?name=%(tenant_name)s' % { + 'tenant_name': self.tenant_bar['name'], + }, + token=token) + self.assertValidTenantResponse(r) + def test_get_user_roles(self): raise nose.exc.SkipTest('Blocked by bug 933565') @@ -460,6 +469,15 @@ class CoreApiTests(object): token=token) self.assertValidUserResponse(r) + def test_get_user_by_name(self): + token = self.get_scoped_token() + r = self.admin_request( + path='/v2.0/users?name=%(user_name)s' % { + 'user_name': self.user_foo['name'], + }, + token=token) + self.assertValidUserResponse(r) + def test_error_response(self): """This triggers assertValidErrorResponse by convention.""" self.public_request(path='/v2.0/tenants', expected_status=401) -- cgit