def test_authorize_tenant_id(self): kargs = { 'trust_id': common.TEST_TRUST_ID, 'tenant_id': common.TEST_TENANT_ID, 'tenant_name': common.TEST_TENANT_NAME } sot = v2.Token(TEST_URL, common.TEST_TOKEN, **kargs) xport = self.create_mock_transport(TEST_RESPONSE_DICT) resp = sot.authorize(xport) eurl = TEST_URL + '/tokens' eheaders = { 'Accept': 'application/json', 'X-Auth-Token': common.TEST_TOKEN } ejson = { 'auth': { 'token': { 'id': common.TEST_TOKEN }, 'trust_id': common.TEST_TRUST_ID, 'tenantId': common.TEST_TENANT_ID } } xport.post.assert_called_with(eurl, headers=eheaders, json=ejson) ecatalog = TEST_RESPONSE_DICT['access'].copy() ecatalog['version'] = 'v2.0' self.assertEqual(ecatalog, resp._info)
def setUp(self): super(TestConnection, self).setUp() self.xport = transport.Transport() self.auth = v2.Token(auth_url='http://127.0.0.1/v2', token='b') self.prof = profile.Profile() self.conn = connection.Connection(authenticator=mock.MagicMock(), transport=mock.MagicMock()) self.conn.session = mock.MagicMock()
def create(username=None, password=None, token=None, auth_url=None, version='3', project_name=None, domain_name=None, project_domain_name=None, user_domain_name=None): """Temporary code for creating an authenticator This is temporary code to create an authenticator. This code will be removed in the future. :param string username: User name for authentication. :param string password: Password associated with the user. :param string token: Authentication token to use if available. :param string auth_url: The URL to use for authentication. :param string version: Version of authentication to use. :param string project_name: Project name to athenticate. :param string domain_name: Domain name to athenticate. :param string project_domain_name: Project domain name to athenticate. :param string user_domain_name: User domain name to athenticate. :returns string: An authenticator. """ version = version.lower().replace('v', '') version = version.split('.')[0] if version == '3': if not token: args = {'username': username, 'password': password} if project_name: args['project_name'] = project_name if domain_name: args['domain_name'] = domain_name if project_domain_name: args['project_domain_name'] = project_domain_name if user_domain_name: args['user_domain_name'] = user_domain_name return v3.Password(auth_url, **args) else: return v3.Token(auth_url, token=token) elif version == '2': if not token: args = {} if project_name: args['tenant_name'] = project_name return v2.Password(auth_url, username, password, **args) else: return v2.Token(auth_url, token) msg = ("No support for identity version: %s" % version) raise exceptions.NoMatchingPlugin(msg)
def test_token(self): kargs = { 'trust_id': common.TEST_TRUST_ID, 'tenant_id': common.TEST_TENANT_ID, 'tenant_name': common.TEST_TENANT_NAME } sot = v2.Token(TEST_URL, common.TEST_TOKEN, **kargs) self.assertEqual(common.TEST_TOKEN, sot.token) self.assertEqual(common.TEST_TRUST_ID, sot.trust_id) self.assertEqual(common.TEST_TENANT_ID, sot.tenant_id) self.assertEqual(common.TEST_TENANT_NAME, sot.tenant_name) expected = {'token': {'id': common.TEST_TOKEN}} self.assertEqual(expected, sot.get_auth_data())
def test_authorize_token_only(self): sot = v2.Token(TEST_URL, common.TEST_TOKEN) xport = self.create_mock_transport(TEST_RESPONSE_DICT) resp = sot.authorize(xport) eurl = TEST_URL + '/tokens' eheaders = { 'Accept': 'application/json', 'X-Auth-Token': common.TEST_TOKEN } ejson = {'auth': {'token': {'id': common.TEST_TOKEN}}} xport.post.assert_called_with(eurl, headers=eheaders, json=ejson) ecatalog = TEST_RESPONSE_DICT['access'].copy() ecatalog['version'] = 'v2.0' self.assertEqual(ecatalog, resp._info)
def test_authorize_bad_response(self): sot = v2.Token(TEST_URL, common.TEST_TOKEN) xport = self.create_mock_transport({}) self.assertRaises(exceptions.InvalidResponse, sot.authorize, xport)