summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDolph Mathews <dolph.mathews@gmail.com>2012-09-11 15:43:47 -0500
committerGerrit Code Review <review@openstack.org>2012-10-09 22:58:12 +0000
commitdd84cdc340c782f53c79ede7ec1e196828605f96 (patch)
treef23fc45ee8f6c381bc7afc9bbe1d6ffc7dd30463
parent6c84d7bf8567bfa3024cd38f80c01ed84768a89c (diff)
downloadpython-keystoneclient-dd84cdc340c782f53c79ede7ec1e196828605f96.tar.gz
v3 List projects for a user
Change-Id: I4d3dfebb0bbe3799c05b9bc39fe2454ccf300873
-rw-r--r--keystoneclient/v3/projects.py4
-rw-r--r--tests/v3/test_projects.py48
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]