Exemplo n.º 1
0
    def test_authorize_multi_method(self):
        methods = [
            v3.PasswordMethod(username=common.TEST_USER,
                              password=common.TEST_PASS),
            v3.TokenMethod(token=common.TEST_TOKEN)
        ]
        sot = v3.Auth(TEST_URL, methods)
        xport = self.create_mock_transport(common.TEST_RESPONSE_DICT_V3)

        resp = sot.authorize(xport)

        eurl = TEST_URL + '/auth/tokens'
        eheaders = {
            'Accept': 'application/json',
            'X-Auth-Token': common.TEST_TOKEN
        }
        up = {'password': common.TEST_PASS, 'name': common.TEST_USER}
        ejson = {
            'auth': {
                'identity': {
                    'token': {
                        'id': common.TEST_TOKEN
                    },
                    'password': {
                        'user': up
                    },
                    'methods': ['password', 'token']
                }
            }
        }
        xport.post.assert_called_with(eurl, headers=eheaders, json=ejson)
        ecatalog = common.TEST_RESPONSE_DICT_V3['token'].copy()
        ecatalog['auth_token'] = common.TEST_SUBJECT
        ecatalog['version'] = 'v3'
        self.assertEqual(ecatalog, resp._info)
Exemplo n.º 2
0
    def test_authorize_token_trust_id(self):
        kargs = {'trust_id': common.TEST_TRUST_ID}
        methods = [v3.TokenMethod(token=common.TEST_TOKEN)]
        sot = v3.Auth(TEST_URL, methods, **kargs)
        xport = self.create_mock_transport(common.TEST_RESPONSE_DICT_V3)

        resp = sot.authorize(xport)

        eurl = TEST_URL + '/auth/tokens'
        eheaders = {
            'Accept': 'application/json',
            'X-Auth-Token': common.TEST_TOKEN
        }
        scope = {'OS-TRUST:trust': {'id': common.TEST_TRUST_ID}}
        ejson = {
            'auth': {
                'identity': {
                    'token': {
                        'id': common.TEST_TOKEN
                    },
                    'methods': ['token']
                },
                'scope': scope
            }
        }
        xport.post.assert_called_with(eurl, headers=eheaders, json=ejson)
        ecatalog = common.TEST_RESPONSE_DICT_V3['token'].copy()
        ecatalog['auth_token'] = common.TEST_SUBJECT
        ecatalog['version'] = 'v3'
        self.assertEqual(ecatalog, resp._info)
Exemplo n.º 3
0
    def test_token_project_domain(self):
        kargs = {
            'project_domain_id': common.TEST_DOMAIN_ID,
            'project_domain_name': common.TEST_DOMAIN_NAME,
            'trust_id': common.TEST_TRUST_ID,
            'project_id': common.TEST_PROJECT_ID,
            'project_name': common.TEST_PROJECT_NAME
        }

        methods = [v3.TokenMethod(token=common.TEST_TOKEN)]
        sot = v3.Auth(TEST_URL, methods, **kargs)

        self.assertEqual(1, len(sot.auth_methods))
        auther = sot.auth_methods[0]
        self.assertEqual(common.TEST_TOKEN, auther.token)
        expected = ('token', {'id': common.TEST_TOKEN})
        self.assertEqual(expected, auther.get_auth_data(None, None, {}))
        self.assertEqual(common.TEST_TRUST_ID, sot.trust_id)
        self.assertEqual(None, sot.domain_id)
        self.assertEqual(None, sot.domain_name)
        self.assertEqual(common.TEST_PROJECT_ID, sot.project_id)
        self.assertEqual(common.TEST_PROJECT_NAME, sot.project_name)
        self.assertEqual(common.TEST_DOMAIN_ID, sot.project_domain_id)
        self.assertEqual(common.TEST_DOMAIN_NAME, sot.project_domain_name)
        self.assertEqual(TEST_URL + '/auth/tokens', sot.token_url)
Exemplo n.º 4
0
    def test_password_domain(self):
        kargs = {'domain_id': common.TEST_DOMAIN_ID,
                 'domain_name': common.TEST_DOMAIN_NAME,
                 'trust_id': common.TEST_TRUST_ID,
                 'project_id': common.TEST_PROJECT_ID,
                 'project_name': common.TEST_PROJECT_NAME}

        methods = [v3.PasswordMethod(username=common.TEST_USER,
                                     user_id=common.TEST_USER_ID,
                                     password=common.TEST_PASS)]
        sot = v3.Auth(TEST_URL, methods, **kargs)

        self.assertEqual(1, len(sot.auth_methods))
        auther = sot.auth_methods[0]
        self.assertEqual(common.TEST_USER_ID, auther.user_id)
        self.assertEqual(common.TEST_USER, auther.username)
        self.assertEqual(None, auther.user_domain_id)
        self.assertEqual(None, auther.user_domain_name)
        self.assertEqual(common.TEST_PASS, auther.password)
        expected = ('password', {'user': {'id': common.TEST_USER_ID,
                                          'password': common.TEST_PASS}})
        self.assertEqual(expected, auther.get_auth_data(None, None, {}))
        self.assertEqual(common.TEST_TRUST_ID, sot.trust_id)
        self.assertEqual(common.TEST_DOMAIN_ID, sot.domain_id)
        self.assertEqual(common.TEST_DOMAIN_NAME, sot.domain_name)
        self.assertEqual(common.TEST_PROJECT_ID, sot.project_id)
        self.assertEqual(common.TEST_PROJECT_NAME, sot.project_name)
        self.assertEqual(None, sot.project_domain_id)
        self.assertEqual(None, sot.project_domain_name)
        self.assertEqual(TEST_URL + '/auth/tokens', sot.token_url)
Exemplo n.º 5
0
    def test_authorize_mutually_exclusive(self):
        x = self.create_mock_transport(common.TEST_RESPONSE_DICT_V3)
        methods = [v3.TokenMethod(token=common.TEST_TOKEN)]

        kargs = {'domain_id': 'a', 'project_id': 'b'}
        sot = v3.Auth(TEST_URL, methods, **kargs)
        self.assertRaises(exceptions.AuthorizationFailure, sot.authorize, x)

        kargs = {'domain_name': 'a', 'project_name': 'b'}
        sot = v3.Auth(TEST_URL, methods, **kargs)
        self.assertRaises(exceptions.AuthorizationFailure, sot.authorize, x)

        kargs = {'domain_name': 'a', 'trust_id': 'b'}
        sot = v3.Auth(TEST_URL, methods, **kargs)
        self.assertRaises(exceptions.AuthorizationFailure, sot.authorize, x)

        kargs = {'project_id': 'a', 'trust_id': 'b'}
        sot = v3.Auth(TEST_URL, methods, **kargs)
        self.assertRaises(exceptions.AuthorizationFailure, sot.authorize, x)
Exemplo n.º 6
0
    def test_authorize_token_project_name_domain_name(self):
        kargs = {
            'project_name': common.TEST_PROJECT_NAME,
            'project_domain_name': common.TEST_DOMAIN_NAME
        }
        methods = [v3.TokenMethod(token=common.TEST_TOKEN)]
        sot = v3.Auth(TEST_URL, methods, **kargs)
        xport = self.create_mock_transport(common.TEST_RESPONSE_DICT_V3)

        resp = sot.authorize(xport)

        eurl = TEST_URL + '/auth/tokens'
        eheaders = {
            'Accept': 'application/json',
            'X-Auth-Token': common.TEST_TOKEN
        }
        domain = {
            'domain': {
                'name': common.TEST_DOMAIN_NAME
            },
            'name': common.TEST_PROJECT_NAME
        }
        scope = {'project': domain}
        ejson = {
            'auth': {
                'identity': {
                    'methods': ['token'],
                    'token': {
                        'id': common.TEST_TOKEN
                    }
                },
                'scope': scope
            }
        }
        xport.post.assert_called_with(eurl, headers=eheaders, json=ejson)
        ecatalog = common.TEST_RESPONSE_DICT_V3['token'].copy()
        ecatalog['auth_token'] = common.TEST_SUBJECT
        ecatalog['version'] = 'v3'
        self.assertEqual(ecatalog, resp._info)
Exemplo n.º 7
0
    def test_authorize_bad_response(self):
        methods = [v3.TokenMethod(token=common.TEST_TOKEN)]
        sot = v3.Auth(TEST_URL, methods)
        xport = self.create_mock_transport({})

        self.assertRaises(exceptions.InvalidResponse, sot.authorize, xport)