示例#1
0
    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()
示例#3
0
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)
示例#4
0
    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())
示例#5
0
    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)
示例#6
0
    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)