diff options
| author | Ziad Sawalha <github@highbridgellc.com> | 2011-05-25 08:39:34 -0500 |
|---|---|---|
| committer | Ziad Sawalha <github@highbridgellc.com> | 2011-05-25 08:39:34 -0500 |
| commit | 18daaeba13aef8cd71fe662eee85835b1e00baaf (patch) | |
| tree | 94efa3d6e0a7bc4863353a20f3a23381e8d1dbea /test | |
| parent | 94af36c61d54a1dc822a48d1ccb5cc9fcdee9bd0 (diff) | |
| parent | d3fb3faed47a555fb5e4ac9ce1f3066087cc1386 (diff) | |
Merge branch 'master' of https://github.com/khussein/keystone
Diffstat (limited to 'test')
| -rw-r--r-- | test/unit/test_common.py | 30 | ||||
| -rw-r--r-- | test/unit/test_roles.py | 150 |
2 files changed, 175 insertions, 5 deletions
diff --git a/test/unit/test_common.py b/test/unit/test_common.py index 2dc6e193..126a3f62 100644 --- a/test/unit/test_common.py +++ b/test/unit/test_common.py @@ -354,8 +354,8 @@ def add_user_xml(tenantid, userid, auth_token): def add_user_json(tenantid, userid, auth_token): header = httplib2.Http(".cache") - url = '%stenants/%s/users/%s/add' % (URL, tenantid, userid) - resp, content = header.request(url, "PUT", body='{}', + url = '%stenants/%s/users/' % (URL, tenantid) + resp, content = header.request(url, "POST", body='{}', headers={"Content-Type": "application/json", "X-Auth-Token": auth_token}) return (resp, content) @@ -716,6 +716,31 @@ def create_role(roleid, auth_token): "X-Auth-Token": auth_token}) return (resp, content) +def create_role_ref(user_id, role_id, tenant_id, auth_token): + header = httplib2.Http(".cache") + + url = '%susers/%s/roleRefs' % (URL, user_id) + body = {"roleRef": {"tenantId": tenant_id, + "roleId": role_id}} + resp, content = header.request(url, "POST", body=json.dumps(body), + headers={"Content-Type": "application/json", + "X-Auth-Token": auth_token}) + print url, resp, content + return (resp, content) + +def create_role_ref_xml(user_id, role_id, tenant_id, auth_token): + header = httplib2.Http(".cache") + url = '%susers/%s/roleRefs' % (URL, user_id) + body = '<?xml version="1.0" encoding="UTF-8"?>\ + <roleRef xmlns="http://docs.openstack.org/identity/api/v2.0" \ + tenantId="%s" roleId="%s"/>\ + ' % (tenant_id, role_id) + resp, content = header.request(url, "POST", body=body, + headers={"Content-Type": "application/xml", + "X-Auth-Token": auth_token, + "ACCEPT": "application/xml"}) + return (resp, content) + def create_role_xml(role_id, auth_token): header = httplib2.Http(".cache") url = '%sroles' % (URL) @@ -723,7 +748,6 @@ def create_role_xml(role_id, auth_token): <role xmlns="http://docs.openstack.org/identity/api/v2.0" \ id="%s" description="A Description of the group"/>\ ' % role_id - print "Role XML Body is :" ,body resp, content = header.request(url, "POST", body=body, headers={"Content-Type": "application/xml", "X-Auth-Token": auth_token, diff --git a/test/unit/test_roles.py b/test/unit/test_roles.py index 37021440..fa736f6a 100644 --- a/test/unit/test_roles.py +++ b/test/unit/test_roles.py @@ -40,7 +40,7 @@ class RolesTest(unittest.TestCase): self.missing_token = utils.get_none_token() self.invalid_token = utils.get_non_existing_token() utils.create_tenant(self.tenant, str(self.auth_token)) - utils.add_user_json(self.tenant, self.user, self.auth_token) + utils.create_user(self.tenant, self.user, self.auth_token) self.token = utils.get_token(self.user, 'secrete', self.tenant, 'token') @@ -61,6 +61,23 @@ class GetRolesTest(RolesTest): elif int(resp['status']) == 503: self.fail('Service Not Available') self.assertEqual(200, int(resp['status'])) + + #verify content + obj = json.loads(content) + if not "roles" in obj: + raise self.fail("Expecting Roles") + roles = obj["roles"]["values"] + if len(roles) != 1: + self.fail("Roles not of required length.") + + role = roles[0] + if not "id" in role: + role_id = None + else: + role_id = role["id"] + if role_id != 'Admin': + self.fail("Not the expected Role") + def test_get_roles_xml(self): header = httplib2.Http(".cache") @@ -75,6 +92,22 @@ class GetRolesTest(RolesTest): elif int(resp['status']) == 503: self.fail('Service Not Available') self.assertEqual(200, int(resp['status'])) + + # Validate Returned Content + dom = etree.Element("root") + dom.append(etree.fromstring(content)) + roles = dom.find("{http://docs.openstack.org/identity/api/v2.0}" \ + "roles") + if roles == None: + self.fail("Expecting Roles") + roles = roles.findall("{http://docs.openstack.org/identity/api/v2.0}" \ + "role") + if len(roles) != 1: + self.fail("Not the expected Role count") + for role in roles: + if role.get("id") != 'Admin': + self.fail("Not the expected Role") + def test_get_roles_exp_token(self): header = httplib2.Http(".cache") @@ -118,6 +151,20 @@ class GetRoleTest(RolesTest): elif int(resp['status']) == 503: self.fail('Service Not Available') self.assertEqual(200, int(resp['status'])) + + #verify content + obj = json.loads(content) + if not "role" in obj: + raise fault.BadRequestFault("Expecting Role") + role = obj["role"] + if not "id" in role: + role_id = None + else: + role_id = role["id"] + if role_id != 'Admin': + self.fail("Not the expected Role") + + def test_get_role_xml(self): self.role = 'Admin' @@ -133,7 +180,18 @@ class GetRoleTest(RolesTest): elif int(resp['status']) == 503: self.fail('Service Not Available') self.assertEqual(200, int(resp['status'])) - + + #verify content + dom = etree.Element("root") + dom.append(etree.fromstring(content)) + role = dom.find("{http://docs.openstack.org/identity/api/v2.0}" \ + "role") + if role == None: + self.fail("Expecting Role") + role_id = role.get("id") + if role_id != 'Admin': + self.fail("Not the expected Role") + def test_get_role_bad(self): header = httplib2.Http(".cache") url = '%sroles/%s' % (utils.URL, 'tenant_bad') @@ -162,5 +220,93 @@ class GetRoleTest(RolesTest): self.fail('Service Not Available') self.assertEqual(404, int(resp['status'])) +class CreateRoleRefTest(RolesTest): + def test_role_ref_create_json(self): + utils.add_user_json(self.tenant, self.user, self.auth_token) + resp, content = utils.create_role_ref(self.user, 'Admin', self.tenant, + str(self.auth_token)) + resp_val = int(resp['status']) + self.assertEqual(201, resp_val) + + def test_role_ref_create_xml(self): + utils.add_user_json(self.tenant, self.user, self.auth_token) + resp, content = utils.create_role_ref_xml(self.user, 'Admin', self.tenant, + str(self.auth_token)) + resp_val = int(resp['status']) + self.assertEqual(201, resp_val) + +class GetRoleRefsTest(RolesTest): + def test_get_rolerefs(self): + header = httplib2.Http(".cache") + utils.add_user_json(self.tenant, self.user, self.auth_token) + resp, content = utils.create_role_ref(self.user, 'Admin', self.tenant, + str(self.auth_token)) + url = '%susers/%s/roleRefs' % (URL, self.user) + #test for Content-Type = application/json + resp, content = header.request(url, "GET", body='{}', + headers={"Content-Type": "application/json", + "X-Auth-Token": str(self.auth_token)}) + if int(resp['status']) == 500: + self.fail('Identity Fault') + elif int(resp['status']) == 503: + self.fail('Service Not Available') + self.assertEqual(200, int(resp['status'])) + + #verify content + obj = json.loads(content) + if not "roleRefs" in obj: + raise self.fail("Expecting RoleRefs") + + def test_get_rolerefs_xml(self): + header = httplib2.Http(".cache") + utils.add_user_json(self.tenant, self.user, self.auth_token) + resp, content = utils.create_role_ref(self.user, 'Admin', self.tenant, + str(self.auth_token)) + url = '%susers/%s/roleRefs' % (URL, self.user) + #test for Content-Type = application/xml + resp, content = header.request(url, "GET", body='{}', + headers={"Content-Type": "application/xml", + "X-Auth-Token": str(self.auth_token), + "ACCEPT": "application/xml"}) + if int(resp['status']) == 500: + self.fail('Identity Fault') + elif int(resp['status']) == 503: + self.fail('Service Not Available') + self.assertEqual(200, int(resp['status'])) + #verify content + dom = etree.Element("root") + dom.append(etree.fromstring(content)) + roles = dom.find("{http://docs.openstack.org/identity/api/v2.0}" \ + "roleRefs") + if roles == None: + self.fail("Expecting Role Refs") + +class DeleteRoleRefTest(RolesTest): + def test_delete_roleref(self): + header = httplib2.Http(".cache") + utils.add_user_json(self.tenant, self.user, self.auth_token) + resp, content = utils.create_role_ref(self.user, 'Admin', self.tenant, + str(self.auth_token)) + resp_val = int(resp['status']) + self.assertEqual(201, resp_val) + obj = json.loads(content) + if not "roleRef" in obj: + raise fault.BadRequestFault("Expecting RoleRef") + roleRef = obj["roleRef"] + if not "id" in roleRef: + role_ref_id = None + else: + role_ref_id = roleRef["id"] + if role_ref_id is None: + raise fault.BadRequestFault("Expecting RoleRefId") + url = '%susers/%s/roleRefs/%s' % (URL, self.user, role_ref_id) + resp, content = header.request(url, "DELETE", body='', + headers={"Content-Type": "application/json", + "X-Auth-Token": str(self.auth_token)}) + resp_val = int(resp['status']) + self.assertEqual(204, resp_val) + return (resp, content) + + if __name__ == '__main__': unittest.main() |
