Provide has_scope_parameters function on plugins
Provide a parameters for testing if scoping options were provided to a parameter. This will allow for consumers like OSC to provide an early earning message if the plugin they have loaded has no scoping parameters and they are trying to make calls against non keystone services. Change-Id: I9c2595ac96fc320f4d41622b34f72ca11dc7efcb
This commit is contained in:
parent
dcea6b89ee
commit
9a8d4abd1f
@ -83,6 +83,11 @@ class Auth(base.BaseIdentityPlugin):
|
||||
:rtype: dict
|
||||
"""
|
||||
|
||||
@property
|
||||
def has_scope_parameters(self):
|
||||
"""Does the plugin have parameters that will create a scoped token"""
|
||||
return self.tenant_id or self.tenant_name or self.trust_id
|
||||
|
||||
|
||||
_NOT_PASSED = object()
|
||||
|
||||
|
@ -74,6 +74,13 @@ class BaseAuth(base.BaseIdentityPlugin):
|
||||
def get_auth_ref(self, session, **kwargs):
|
||||
return None
|
||||
|
||||
@property
|
||||
def has_scope_parameters(self):
|
||||
"""Does the plugin have parameters that will create a scoped token"""
|
||||
return (self.domain_id or self.domain_name or
|
||||
self.project_id or self.project_name or
|
||||
self.trust_id)
|
||||
|
||||
|
||||
class Auth(BaseAuth):
|
||||
"""Identity V3 Authentication Plugin.
|
||||
|
@ -101,6 +101,7 @@ class V2IdentityPlugin(utils.TestCase):
|
||||
a = v2.Password(self.TEST_URL, username=self.TEST_USER,
|
||||
password=self.TEST_PASS)
|
||||
self.assertIsNone(a.user_id)
|
||||
self.assertFalse(a.has_scope_parameters)
|
||||
s = session.Session(a)
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
s.get_auth_headers())
|
||||
@ -117,6 +118,7 @@ class V2IdentityPlugin(utils.TestCase):
|
||||
a = v2.Password(self.TEST_URL, user_id=self.TEST_USER,
|
||||
password=self.TEST_PASS)
|
||||
self.assertIsNone(a.username)
|
||||
self.assertFalse(a.has_scope_parameters)
|
||||
s = session.Session(a)
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
s.get_auth_headers())
|
||||
@ -132,6 +134,7 @@ class V2IdentityPlugin(utils.TestCase):
|
||||
self.stub_auth(json=self.TEST_RESPONSE_DICT)
|
||||
a = v2.Password(self.TEST_URL, username=self.TEST_USER,
|
||||
password=self.TEST_PASS, tenant_id=self.TEST_TENANT_ID)
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
self.assertIsNone(a.user_id)
|
||||
s = session.Session(a)
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
@ -148,6 +151,7 @@ class V2IdentityPlugin(utils.TestCase):
|
||||
a = v2.Password(self.TEST_URL, user_id=self.TEST_USER,
|
||||
password=self.TEST_PASS, tenant_id=self.TEST_TENANT_ID)
|
||||
self.assertIsNone(a.username)
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
s = session.Session(a)
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
s.get_auth_headers())
|
||||
@ -176,6 +180,7 @@ class V2IdentityPlugin(utils.TestCase):
|
||||
self.stub_auth(json=self.TEST_RESPONSE_DICT)
|
||||
a = v2.Password(self.TEST_URL, username=self.TEST_USER,
|
||||
password=self.TEST_PASS, trust_id='trust')
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
s = session.Session(a)
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
s.get_auth_headers())
|
||||
|
@ -197,6 +197,7 @@ class V3IdentityPlugin(utils.TestCase):
|
||||
a = v3.Password(self.TEST_URL,
|
||||
username=self.TEST_USER,
|
||||
password=self.TEST_PASS)
|
||||
self.assertFalse(a.has_scope_parameters)
|
||||
s = session.Session(auth=a)
|
||||
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
@ -216,6 +217,7 @@ class V3IdentityPlugin(utils.TestCase):
|
||||
self.stub_auth(json=self.TEST_RESPONSE_DICT)
|
||||
a = v3.Password(self.TEST_URL, username=self.TEST_USER,
|
||||
password=self.TEST_PASS, domain_id=self.TEST_DOMAIN_ID)
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
s = session.Session(a)
|
||||
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
@ -234,6 +236,7 @@ class V3IdentityPlugin(utils.TestCase):
|
||||
a = v3.Password(self.TEST_URL, username=self.TEST_USER,
|
||||
password=self.TEST_PASS,
|
||||
project_id=self.TEST_TENANT_ID)
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
s = session.Session(a)
|
||||
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
@ -288,6 +291,7 @@ class V3IdentityPlugin(utils.TestCase):
|
||||
password='password', project_id='project',
|
||||
domain_id='domain')
|
||||
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
self.assertRaises(exceptions.AuthorizationFailure,
|
||||
a.get_token, None)
|
||||
self.assertRaises(exceptions.AuthorizationFailure,
|
||||
@ -297,6 +301,7 @@ class V3IdentityPlugin(utils.TestCase):
|
||||
self.stub_auth(json=self.TEST_RESPONSE_DICT)
|
||||
a = v3.Password(self.TEST_URL, username=self.TEST_USER,
|
||||
password=self.TEST_PASS, trust_id='trust')
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
s = session.Session(a)
|
||||
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
@ -335,6 +340,7 @@ class V3IdentityPlugin(utils.TestCase):
|
||||
password=self.TEST_PASS)
|
||||
t = v3.TokenMethod(token='foo')
|
||||
a = v3.Auth(self.TEST_URL, [p, t], trust_id='trust')
|
||||
self.assertTrue(a.has_scope_parameters)
|
||||
s = session.Session(auth=a)
|
||||
|
||||
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
|
||||
|
Loading…
x
Reference in New Issue
Block a user