From 976b126c1e18c260008909509a9c551fb6c55ab7 Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Fri, 4 Jul 2014 13:42:06 +1000 Subject: [PATCH] Add v2 Token manager authenticate tests This function is currently completely untested. Create tests to reinforce behaviour. Change-Id: I8cfbea37964e3d96cc444ad6f62542786429e44b --- keystoneclient/tests/v2_0/test_tokens.py | 145 +++++++++++++++++++++++ 1 file changed, 145 insertions(+) diff --git a/keystoneclient/tests/v2_0/test_tokens.py b/keystoneclient/tests/v2_0/test_tokens.py index bd7e6cf2b..efc3f1231 100644 --- a/keystoneclient/tests/v2_0/test_tokens.py +++ b/keystoneclient/tests/v2_0/test_tokens.py @@ -14,7 +14,10 @@ import uuid import httpretty +from keystoneclient import fixture from keystoneclient.tests.v2_0 import utils +from keystoneclient.v2_0 import client +from keystoneclient.v2_0 import tokens class TokenTests(utils.TestCase): @@ -23,3 +26,145 @@ class TokenTests(utils.TestCase): id_ = uuid.uuid4().hex self.stub_url(httpretty.DELETE, ['tokens', id_], status=204) self.client.tokens.delete(id_) + + @httpretty.activate + def test_user_password(self): + token_fixture = fixture.V2Token(user_name=self.TEST_USER) + self.stub_auth(json=token_fixture) + + password = uuid.uuid4().hex + token_ref = self.client.tokens.authenticate(username=self.TEST_USER, + password=password) + + self.assertIsInstance(token_ref, tokens.Token) + self.assertEqual(token_fixture.token_id, token_ref.id) + self.assertEqual(token_fixture.expires_str, token_ref.expires) + + req_body = { + 'auth': { + 'passwordCredentials': { + 'username': self.TEST_USER, + 'password': password, + } + } + } + + self.assertRequestBodyIs(json=req_body) + + @httpretty.activate + def test_with_token_id(self): + token_fixture = fixture.V2Token() + self.stub_auth(json=token_fixture) + + token_id = uuid.uuid4().hex + token_ref = self.client.tokens.authenticate(token=token_id) + + self.assertIsInstance(token_ref, tokens.Token) + self.assertEqual(token_fixture.token_id, token_ref.id) + self.assertEqual(token_fixture.expires_str, token_ref.expires) + + req_body = { + 'auth': { + 'token': { + 'id': token_id, + } + } + } + + self.assertRequestBodyIs(json=req_body) + + def test_without_auth_params(self): + self.assertRaises(ValueError, self.client.tokens.authenticate) + self.assertRaises(ValueError, self.client.tokens.authenticate, + tenant_id=uuid.uuid4().hex) + + @httpretty.activate + def test_with_tenant_id(self): + token_fixture = fixture.V2Token() + token_fixture.set_scope() + self.stub_auth(json=token_fixture) + + token_id = uuid.uuid4().hex + tenant_id = uuid.uuid4().hex + token_ref = self.client.tokens.authenticate(token=token_id, + tenant_id=tenant_id) + + self.assertIsInstance(token_ref, tokens.Token) + self.assertEqual(token_fixture.token_id, token_ref.id) + self.assertEqual(token_fixture.expires_str, token_ref.expires) + + tenant_data = {'id': token_fixture.tenant_id, + 'name': token_fixture.tenant_name} + self.assertEqual(tenant_data, token_ref.tenant) + + req_body = { + 'auth': { + 'token': { + 'id': token_id, + }, + 'tenantId': tenant_id + } + } + + self.assertRequestBodyIs(json=req_body) + + @httpretty.activate + def test_with_tenant_name(self): + token_fixture = fixture.V2Token() + token_fixture.set_scope() + self.stub_auth(json=token_fixture) + + token_id = uuid.uuid4().hex + tenant_name = uuid.uuid4().hex + token_ref = self.client.tokens.authenticate(token=token_id, + tenant_name=tenant_name) + + self.assertIsInstance(token_ref, tokens.Token) + self.assertEqual(token_fixture.token_id, token_ref.id) + self.assertEqual(token_fixture.expires_str, token_ref.expires) + + tenant_data = {'id': token_fixture.tenant_id, + 'name': token_fixture.tenant_name} + self.assertEqual(tenant_data, token_ref.tenant) + + req_body = { + 'auth': { + 'token': { + 'id': token_id, + }, + 'tenantName': tenant_name + } + } + + self.assertRequestBodyIs(json=req_body) + + @httpretty.activate + def test_authenticate_use_admin_url(self): + token_fixture = fixture.V2Token() + token_fixture.set_scope() + self.stub_auth(json=token_fixture) + + self.assertEqual(self.TEST_URL, self.client.management_url) + + token_ref = self.client.tokens.authenticate(token=uuid.uuid4().hex) + self.assertIsInstance(token_ref, tokens.Token) + self.assertEqual(token_fixture.token_id, token_ref.id) + self.assertEqual(token_fixture.expires_str, token_ref.expires) + + @httpretty.activate + def test_authenticate_fallback_to_auth_url(self): + new_auth_url = 'http://keystone.test:5000/v2.0' + + token_fixture = fixture.V2Token() + self.stub_auth(base_url=new_auth_url, json=token_fixture) + + c = client.Client(username=self.TEST_USER, + auth_url=new_auth_url, + password=uuid.uuid4().hex) + + self.assertIsNone(c.management_url) + + token_ref = c.tokens.authenticate(token=uuid.uuid4().hex) + self.assertIsInstance(token_ref, tokens.Token) + self.assertEqual(token_fixture.token_id, token_ref.id) + self.assertEqual(token_fixture.expires_str, token_ref.expires)