diff options
author | Dolph Mathews <dolph.mathews@gmail.com> | 2012-09-11 15:43:47 -0500 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2012-10-09 22:58:12 +0000 |
commit | dd84cdc340c782f53c79ede7ec1e196828605f96 (patch) | |
tree | f23fc45ee8f6c381bc7afc9bbe1d6ffc7dd30463 | |
parent | 6c84d7bf8567bfa3024cd38f80c01ed84768a89c (diff) | |
download | python-keystoneclient-dd84cdc340c782f53c79ede7ec1e196828605f96.tar.gz |
v3 List projects for a user
Change-Id: I4d3dfebb0bbe3799c05b9bc39fe2454ccf300873
-rw-r--r-- | keystoneclient/v3/projects.py | 4 | ||||
-rw-r--r-- | tests/v3/test_projects.py | 48 |
2 files changed, 51 insertions, 1 deletions
diff --git a/keystoneclient/v3/projects.py b/keystoneclient/v3/projects.py index a5ebac5..bcbc4fd 100644 --- a/keystoneclient/v3/projects.py +++ b/keystoneclient/v3/projects.py @@ -58,8 +58,10 @@ class ProjectManager(base.CrudManager): description=description, enabled=enabled) - def list(self, domain=None): + def list(self, domain=None, user=None): + base_url = '/users/%s' % base.getid(user) if user else None return super(ProjectManager, self).list( + base_url=base_url, domain_id=base.getid(domain)) def get(self, project): diff --git a/tests/v3/test_projects.py b/tests/v3/test_projects.py index 73ce207..8a4ef40 100644 --- a/tests/v3/test_projects.py +++ b/tests/v3/test_projects.py @@ -1,3 +1,5 @@ +import httplib2 +import urlparse import uuid from keystoneclient.v3 import projects @@ -19,3 +21,49 @@ class ProjectTests(utils.TestCase, utils.CrudTests): kwargs.setdefault('enabled', True) kwargs.setdefault('name', uuid.uuid4().hex) return kwargs + + def test_list_projects_for_user(self): + ref_list = [self.new_ref(), self.new_ref()] + + user_id = uuid.uuid4().hex + resp = httplib2.Response({ + 'status': 200, + 'body': self.serialize(ref_list), + }) + + method = 'GET' + httplib2.Http.request( + urlparse.urljoin( + self.TEST_URL, + 'v3/users/%s/%s' % (user_id, self.collection_key)), + method, + headers=self.headers[method]) \ + .AndReturn((resp, resp['body'])) + self.mox.ReplayAll() + + returned_list = self.manager.list(user=user_id) + self.assertTrue(len(returned_list)) + [self.assertTrue(isinstance(r, self.model)) for r in returned_list] + + def test_list_projects_for_domain(self): + ref_list = [self.new_ref(), self.new_ref()] + + domain_id = uuid.uuid4().hex + resp = httplib2.Response({ + 'status': 200, + 'body': self.serialize(ref_list), + }) + + method = 'GET' + httplib2.Http.request( + urlparse.urljoin( + self.TEST_URL, + 'v3/%s?domain_id=%s' % (self.collection_key, domain_id)), + method, + headers=self.headers[method]) \ + .AndReturn((resp, resp['body'])) + self.mox.ReplayAll() + + returned_list = self.manager.list(domain=domain_id) + self.assertTrue(len(returned_list)) + [self.assertTrue(isinstance(r, self.model)) for r in returned_list] |