Fix inconsistient method names and add tests

Fixes bug 937104

https://review.openstack.org/3527 renamed methods in RoleManager:
get_user_role_refs() -> roles_for_user()
add_user_to_tenant() -> add_user_role()
remove_user_from_tenant() -> remove_user_role()

* Calls to old method names in Tenant and TenantManager are fixed.
* Add tests for all renamed and affected methods.

Change-Id: Idf569d7dd737c5ccc38b4ea8212d5336998ae0f1
This commit is contained in:
Dean Troyer
2012-02-20 10:57:06 -06:00
parent bbd2561507
commit 47c057afd5
4 changed files with 185 additions and 13 deletions

View File

@@ -89,4 +89,4 @@ class RoleManager(base.ManagerWithFind):
return self._delete(route % params)
else:
route = "/users/%s/roles/OS-KSADM/%s"
return self._delete(route % (user_id, role_id), "roles")
return self._delete(route % (user_id, role_id))

View File

@@ -42,14 +42,14 @@ class Tenant(base.Resource):
return retval
def add_user(self, user, role):
return self.manager.api.roles.add_user_to_tenant(self.id,
base.getid(user),
base.getid(role))
return self.manager.api.roles.add_user_role(base.getid(user),
base.getid(role),
self.id)
def remove_user(self, user, role):
return self.manager.api.roles.remove_user_from_tenant(self.id,
base.getid(user),
base.getid(role))
return self.manager.api.roles.remove_user_role(base.getid(user),
base.getid(role),
self.id)
def list_users(self):
return self.manager.list_users(self.id)
@@ -116,12 +116,12 @@ class TenantManager(base.ManagerWithFind):
def add_user(self, tenant, user, role):
""" Add a user to a tenant with the given role. """
return self.api.roles.add_user_to_tenant(base.getid(tenant),
base.getid(user),
base.getid(role))
return self.api.roles.add_user_role(base.getid(user),
base.getid(role),
base.getid(tenant))
def remove_user(self, tenant, user, role):
""" Remove the specified role from the user on the tenant. """
return self.api.roles.remove_user_from_tenant(base.getid(tenant),
base.getid(user),
base.getid(role))
return self.api.roles.remove_user_role(base.getid(user),
base.getid(role),
base.getid(tenant))

View File

@@ -98,3 +98,97 @@ class RoleTests(utils.TestCase):
role_list = self.client.roles.list()
[self.assertTrue(isinstance(r, roles.Role)) for r in role_list]
def test_roles_for_user(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps(self.TEST_ROLES),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/users/foo/roles?fresh=1234'),
'GET',
headers=self.TEST_REQUEST_HEADERS) \
.AndReturn((resp, resp['body']))
self.mox.ReplayAll()
role_list = self.client.roles.roles_for_user('foo')
[self.assertTrue(isinstance(r, roles.Role)) for r in role_list]
def test_roles_for_user_tenant(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps(self.TEST_ROLES),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/tenants/barrr/users/foo/roles?fresh=1234'),
'GET',
headers=self.TEST_REQUEST_HEADERS) \
.AndReturn((resp, resp['body']))
self.mox.ReplayAll()
role_list = self.client.roles.roles_for_user('foo', 'barrr')
[self.assertTrue(isinstance(r, roles.Role)) for r in role_list]
def test_add_user_role(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/users/foo/roles/OS-KSADM/barrr'),
'PUT',
body='null',
headers=self.TEST_POST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
self.client.roles.add_user_role('foo', 'barrr')
def test_add_user_role_tenant(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/tenants/4/users/foo/roles/OS-KSADM/barrr'),
'PUT',
body='null',
headers=self.TEST_POST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
self.client.roles.add_user_role('foo', 'barrr', '4')
def test_remove_user_role(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/users/foo/roles/OS-KSADM/barrr'),
'DELETE',
headers=self.TEST_REQUEST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
self.client.roles.remove_user_role('foo', 'barrr')
def test_remove_user_role_tenant(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/tenants/4/users/foo/roles/OS-KSADM/barrr'),
'DELETE',
headers=self.TEST_REQUEST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
self.client.roles.remove_user_role('foo', 'barrr', '4')

View File

@@ -195,3 +195,81 @@ class TenantTests(utils.TestCase):
self.assertEqual(tenant.name, "tenantX")
self.assertEqual(tenant.description, "I changed you!")
self.assertFalse(tenant.enabled)
def test_add_user(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/tenants/4/users/foo/roles/OS-KSADM/barrr'),
'PUT',
body='null',
headers=self.TEST_POST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
self.client.tenants.add_user('4', 'foo', 'barrr')
def test_remove_user(self):
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/tenants/4/users/foo/roles/OS-KSADM/barrr'),
'DELETE',
headers=self.TEST_REQUEST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
self.client.tenants.remove_user('4', 'foo', 'barrr')
def test_tenant_add_user(self):
req_body = {"tenant": {"id": 4,
"name": "tenantX",
"description": "I changed you!",
"enabled": False}}
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/tenants/4/users/foo/roles/OS-KSADM/barrr'),
'PUT',
body='null',
headers=self.TEST_POST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
# 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))
def test_tenant_remove_user(self):
req_body = {"tenant": {"id": 4,
"name": "tenantX",
"description": "I changed you!",
"enabled": False}}
resp = httplib2.Response({
"status": 200,
"body": json.dumps({}),
})
httplib2.Http.request(urlparse.urljoin(self.TEST_URL,
'v2.0/tenants/4/users/foo/roles/OS-KSADM/barrr'),
'DELETE',
headers=self.TEST_REQUEST_HEADERS) \
.AndReturn((resp, None))
self.mox.ReplayAll()
# 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))