def test_by_token_after_username(self): """ MimicCore.session_for_token should retrieve the same session that was created by MimicCore.session_for_username_password. """ core = MimicCore(Clock(), []) a = core.session_for_username_password("username", "testpswd") b = core.session_for_token(a.token) self.assertIdentical(a, b) c = core.session_for_api_key("apiuser", "testkey") d = core.session_for_token(c.token) self.assertIdentical(c, d)
def test_by_token_after_username(self): """ MimicCore.session_for_token should retrieve the same session that was created by MimicCore.session_for_username_password. """ core = MimicCore(Clock(), []) a = core.session_for_username_password("username", "testpswd") b = core.session_for_token(a.token) self.assertIdentical(a, b) c = core.session_for_api_key("apiuser", "testkey") d = core.session_for_token(c.token) self.assertIdentical(c, d)
def test_auth_accepts_tenant_name(self): """ If "tenantName" is passed, the tenant specified is used instead of a generated tenant ID. """ core = MimicCore(Clock(), []) root = MimicRoot(core).app.resource() (response, json_body) = self.successResultOf(json_request( self, root, "POST", "/identity/v2.0/tokens", { "auth": { "passwordCredentials": { "username": "******", "password": "******" }, "tenantName": "turtlepower" } } )) self.assertEqual(200, response.code) self.assertEqual("turtlepower", json_body['access']['token']['tenant']['id']) token = json_body['access']['token']['id'] session = core.session_for_token(token) self.assertEqual(token, session.token) self.assertEqual("turtlepower", session.tenant_id)
def test_response_has_auth_token(self): """ The JSON response has a access.token.id key corresponding to its MimicCore session, and therefore access.token.tenant.id should match that session's tenant_id. """ core = MimicCore(Clock(), []) root = MimicRoot(core).app.resource() (response, json_body) = self.successResultOf(json_request( self, root, "POST", "/identity/v2.0/tokens", { "auth": { "passwordCredentials": { "username": "******", "password": "******" } } } )) self.assertEqual(200, response.code) token = json_body['access']['token']['id'] tenant_id = json_body['access']['token']['tenant']['id'] session = core.session_for_token(token) self.assertEqual(token, session.token) self.assertEqual(tenant_id, session.tenant_id)
def test_by_username_after_token(self): """ MimicCore.session_for_username_password should retrieve the same session that was created by MimicCore.session_for_token. """ core = MimicCore(Clock(), []) a = core.session_for_token("testtoken") b = core.session_for_username_password(a.username, "testpswd") c = core.session_for_api_key(a.username, "testapikey") self.assertIdentical(a, b) self.assertIdentical(a, c)
def test_by_username_after_token(self): """ MimicCore.session_for_username_password should retrieve the same session that was created by MimicCore.session_for_token. """ core = MimicCore(Clock(), []) a = core.session_for_token("testtoken") b = core.session_for_username_password(a.username, "testpswd") c = core.session_for_api_key(a.username, "testapikey") self.assertIdentical(a, b) self.assertIdentical(a, c)
def test_session_created_for_token(self): """ A session is created for the token provided """ core = MimicCore(Clock(), []) root = MimicRoot(core).app.resource() token = '1234567890' request( self, root, "GET", "/identity/v2.0/tokens/{0}/endpoints".format(token) ) session = core.session_for_token(token) self.assertEqual(token, session.token)
def test_impersonation(self): """ MimicCore.session_for_impersonation will return a session that can be retrieved by token_id but not username. """ clock = Clock() core = MimicCore(clock, []) A_LITTLE = 1234 clock.advance(A_LITTLE) A_LOT = 65432 a = core.session_for_impersonation("pretender", A_LOT) a_prime = core.session_for_impersonation("pretender", A_LOT) self.assertIdentical(a, a_prime) b = core.session_for_token(a.token) self.assertEqual(a.expires, datetime.utcfromtimestamp(A_LITTLE + A_LOT)) self.assertIdentical(a, b) c = core.session_for_username_password("pretender", "not a password") self.assertNotIdentical(a, c) self.assertEqual(a.username, c.username) self.assertEqual(a.tenant_id, c.tenant_id)
def test_impersonation(self): """ MimicCore.session_for_impersonation will return a session that can be retrieved by token_id but not username. """ clock = Clock() core = MimicCore(clock, []) A_LITTLE = 1234 clock.advance(A_LITTLE) A_LOT = 65432 a = core.session_for_impersonation("pretender", A_LOT) a_prime = core.session_for_impersonation("pretender", A_LOT) self.assertIdentical(a, a_prime) b = core.session_for_token(a.token) self.assertEqual( a.expires, datetime.utcfromtimestamp(A_LITTLE + A_LOT)) self.assertIdentical(a, b) c = core.session_for_username_password("pretender", "not a password") self.assertNotIdentical(a, c) self.assertEqual(a.username, c.username) self.assertEqual(a.tenant_id, c.tenant_id)