diff options
Diffstat (limited to 'keystoneclient')
| -rw-r--r-- | keystoneclient/access.py | 32 | ||||
| -rw-r--r-- | keystoneclient/fixture/v3.py | 27 | ||||
| -rw-r--r-- | keystoneclient/tests/v3/test_access.py | 20 |
3 files changed, 78 insertions, 1 deletions
diff --git a/keystoneclient/access.py b/keystoneclient/access.py index 8e123a3..354ccec 100644 --- a/keystoneclient/access.py +++ b/keystoneclient/access.py @@ -337,6 +337,22 @@ class AccessInfo(dict): """ return self.get('version') + @property + def oauth_access_token_id(self): + """Return the access token ID if OAuth authentication used. + + :returns: str or None. + """ + raise NotImplementedError() + + @property + def oauth_consumer_id(self): + """Return the consumer ID if OAuth authentication used. + + :returns: str or None. + """ + raise NotImplementedError() + class AccessInfoV2(AccessInfo): """An object for encapsulating a raw v2 auth token from identity @@ -505,6 +521,14 @@ class AccessInfoV2(AccessInfo): else: return None + @property + def oauth_access_token_id(self): + return None + + @property + def oauth_consumer_id(self): + return None + class AccessInfoV3(AccessInfo): """An object for encapsulating a raw v3 auth token from identity @@ -647,3 +671,11 @@ class AccessInfoV3(AccessInfo): else: return None + + @property + def oauth_access_token_id(self): + return self.get('OS-OAUTH1', {}).get('access_token_id') + + @property + def oauth_consumer_id(self): + return self.get('OS-OAUTH1', {}).get('consumer_id') diff --git a/keystoneclient/fixture/v3.py b/keystoneclient/fixture/v3.py index a0896f0..87e0b7b 100644 --- a/keystoneclient/fixture/v3.py +++ b/keystoneclient/fixture/v3.py @@ -59,7 +59,8 @@ class Token(dict): project_id=None, project_name=None, project_domain_id=None, project_domain_name=None, domain_id=None, domain_name=None, trust_id=None, trust_impersonation=None, trustee_user_id=None, - trustor_user_id=None): + trustor_user_id=None, oauth_access_token_id=None, + oauth_consumer_id=None): super(Token, self).__init__() self.user_id = user_id or uuid.uuid4().hex @@ -106,6 +107,10 @@ class Token(dict): trustee_user_id=trustee_user_id, trustor_user_id=trustor_user_id) + if oauth_access_token_id or oauth_consumer_id: + self.set_oauth(access_token_id=oauth_access_token_id, + consumer_id=oauth_consumer_id) + @property def root(self): return self.setdefault('token', {}) @@ -272,6 +277,22 @@ class Token(dict): trust = self.root.setdefault('OS-TRUST:trust', {}) trust.setdefault('trustor_user', {})['id'] = value + @property + def oauth_access_token_id(self): + return self.root.get('OS-OAUTH1', {}).get('access_token_id') + + @oauth_access_token_id.setter + def oauth_access_token_id(self, value): + self.root.setdefault('OS-OAUTH1', {})['access_token_id'] = value + + @property + def oauth_consumer_id(self): + return self.root.get('OS-OAUTH1', {}).get('consumer_id') + + @oauth_consumer_id.setter + def oauth_consumer_id(self, value): + self.root.setdefault('OS-OAUTH1', {})['consumer_id'] = value + def validate(self): project = self.root.get('project') domain = self.root.get('domain') @@ -327,3 +348,7 @@ class Token(dict): self.trust_impersonation = impersonation self.trustee_user_id = trustee_user_id or uuid.uuid4().hex self.trustor_user_id = trustor_user_id or uuid.uuid4().hex + + def set_oauth(self, access_token_id=None, consumer_id=None): + self.oauth_access_token_id = access_token_id or uuid.uuid4().hex + self.oauth_consumer_id = consumer_id or uuid.uuid4().hex diff --git a/keystoneclient/tests/v3/test_access.py b/keystoneclient/tests/v3/test_access.py index 6dc5a70..4353af7 100644 --- a/keystoneclient/tests/v3/test_access.py +++ b/keystoneclient/tests/v3/test_access.py @@ -11,8 +11,10 @@ # under the License. import datetime +import uuid from keystoneclient import access +from keystoneclient import fixture from keystoneclient.openstack.common import timeutils from keystoneclient.tests.v3 import client_fixtures from keystoneclient.tests.v3 import utils @@ -152,3 +154,21 @@ class AccessInfoTest(utils.TestCase): self.assertFalse(auth_ref.domain_scoped) self.assertTrue(auth_ref.project_scoped) + + def test_oauth_access(self): + consumer_id = uuid.uuid4().hex + access_token_id = uuid.uuid4().hex + + token = fixture.V3Token() + token.set_project_scope() + token.set_oauth(access_token_id=access_token_id, + consumer_id=consumer_id) + + auth_ref = access.AccessInfo.factory(body=token) + + self.assertEqual(consumer_id, auth_ref.oauth_consumer_id) + self.assertEqual(access_token_id, auth_ref.oauth_access_token_id) + + self.assertEqual(consumer_id, auth_ref['OS-OAUTH1']['consumer_id']) + self.assertEqual(access_token_id, + auth_ref['OS-OAUTH1']['access_token_id']) |
