Ejemplo n.º 1
0
    def test_create_user(self,
                         user_id=None,
                         name=None,
                         user_type=None,
                         backend=None):
        lang_code = random.choice(['zh-hans', 'jp', 'ko', 'en', 'es'])
        language = Language.get(lang_code)
        if user_id is None:
            user_id = utils.random_string() + '@mz.co.kr'

        if name is None:
            name = 'Steven' + utils.random_string()

        params = {
            'user_id': user_id,
            'password': utils.generate_password(),
            'name': name,
            'email': user_id,
            'timezone': 'Asia/Seoul',
            'language': language.__str__(),
            'tags': {
                'tag_key': 'tag_value'
            },
            'domain_id': self.domain.domain_id
        }

        user = self.identity_v1.User.create(params,
                                            metadata=(('token',
                                                       self.owner_token), ))
        self.user = user
        self.users.append(user)
        self._print_data(self.user, 'test_create_user')
        self.assertEqual(self.user.name, params['name'])
Ejemplo n.º 2
0
    def setUp(self):
        endpoints = self.config.get('ENDPOINTS', {})
        self.identity_v1 = pygrpc.client(endpoint=endpoints.get('identity', {}).get('v1'),
                                         version='v1')

        self.domain = None
        self.owner_id = 'DomainOwner'
        self.owner_pw = utils.generate_password()
        self.owner = None
        self.owner_token = None
Ejemplo n.º 3
0
    def _create_domain_owner(cls):
        cls.owner_id = utils.random_string()
        cls.owner_pw = utils.generate_password()

        params = {
            'owner_id': cls.owner_id,
            'password': cls.owner_pw,
            'domain_id': cls.domain.domain_id
        }

        owner = cls.identity_v1.DomainOwner.create(params)
        cls.domain_owner = owner
Ejemplo n.º 4
0
    def _create_domain_owner(cls):
        cls.owner_id = utils.random_string()
        cls.owner_pw = utils.generate_password()

        owner = cls.identity_v1.DomainOwner.create({
            'owner_id': cls.owner_id,
            'password': cls.owner_pw,
            'domain_id': cls.domain.domain_id
        })

        cls.domain_owner = owner
        print(f'owner_id: {cls.owner_id}')
        print(f'owner_pw: {cls.owner_pw}')
Ejemplo n.º 5
0
    def _create_user(self, user_type=None, backend=None):
        self.user_params = {
            'user_id': utils.random_string() + '@mz.co.kr',
            'password': utils.generate_password(),
            'name': 'Steven' + utils.random_string(),
            'timezone': 'Asia/Seoul',
            'user_type': user_type or 'USER',
            'backend': backend or 'LOCAL',
            'domain_id': self.domain.domain_id
        }
        self.user = self.identity_v1.User.create(
            self.user_params, metadata=(('token', self.owner_token), ))

        self._print_data(self.user, '_create_user')
Ejemplo n.º 6
0
    def _test_create_user(self, user_id=None):
        if user_id is None:
            user_id = utils.random_string() + '@mz.co.kr'

        self.user_password = utils.generate_password()

        params = {
            'user_id': user_id,
            'password': self.user_password,
            'name': utils.random_string(),
            'domain_id': self.domain.domain_id
        }

        self.user = self.identity_v1.User.create(
            params, metadata=(('token', self.owner_token), ))
        self.users.append(self.user)
Ejemplo n.º 7
0
    def _create_user(cls, user_id=None):
        if user_id is None:
            user_id = utils.random_string() + '@mz.co.kr'

        param = {
            'user_id': user_id,
            'password': utils.generate_password(),
            'name': 'Steven' + utils.random_string(),
            'timezone': 'Asia/Seoul',
            'email': user_id,
            'domain_id': cls.domain.domain_id
        }

        cls.user = cls.identity_v1.User.create(param,
                                               metadata=(('token',
                                                          cls.owner_token), ))
Ejemplo n.º 8
0
    def _test_create_user(self, name=None, user_id=None):
        if self.role is None:
            self._test_create_role()

        if user_id is None:
            user_id = utils.random_string() + '@mz.co.kr'

        params = {
            'user_id': user_id,
            'domain_id': self.domain.domain_id,
            'password': utils.generate_password(),
            'name': name or 'test' + utils.random_string(),
            'timezone': 'Asia/Seoul',
            'email': user_id
        }
        self.user = self.identity_v1.User.create(
            params, metadata=(('token', self.owner_token), ))

        self.users.append(self.user)

        return self.user
Ejemplo n.º 9
0
    def test_create_owner(self):
        lang_code = random.choice(['zh-hans', 'jp', 'ko', 'en', 'es'])
        language = Language.get(lang_code)
        owner_id = utils.random_string()

        params = {
            'owner_id': owner_id,
            'password': utils.generate_password(),
            'name': 'Steven' + utils.random_string(),
            'language': language.__str__(),
            'timezone': 'Asia/Seoul',
            'email': 'Steven' + utils.random_string() + '@mz.co.kr',
            'domain_id': self.domain.domain_id
        }

        owner = self.identity_v1.DomainOwner.create(params)
        self.domain_owner = owner
        self.params = params
        self.assertEqual(params['name'], self.domain_owner.name)

        self._issue_owner_token(params['owner_id'], params['password'])
Ejemplo n.º 10
0
class TestAuthentication(unittest.TestCase):
    config = utils.load_yaml_from_file(
        os.environ.get('SPACEONE_TEST_CONFIG_FILE', './config.yml'))

    pp = pprint.PrettyPrinter(indent=4)
    domain = None
    api_key_info = None
    api_key = None
    identity_v1 = None
    owner_id = None
    owner_pw = utils.generate_password()
    owner_token = None

    @classmethod
    def setUpClass(cls):
        super(TestAuthentication, cls).setUpClass()
        endpoints = cls.config.get('ENDPOINTS', {})
        cls.identity_v1 = pygrpc.client(endpoint=endpoints.get('identity',
                                                               {}).get('v1'),
                                        version='v1')
        cls._create_domain()
        cls._create_domain_owner()
        cls._issue_owner_token()

    @classmethod
    def tearDownClass(cls):
        super(TestAuthentication, cls).tearDownClass()

        cls.identity_v1.DomainOwner.delete(
            {
                'domain_id': cls.domain.domain_id,
                'owner_id': cls.owner_id
            },
            metadata=(('token', cls.owner_token), ))

        cls.identity_v1.Domain.delete({'domain_id': cls.domain.domain_id},
                                      metadata=(('token', cls.owner_token), ))

        if cls.api_key_info:
            cls.identity_v1.APIKey.delete(
                {'api_key_id': cls.api_key_info.api_key_id},
                metadata=(('token', cls.owner_token), ))

    @classmethod
    def _create_domain(cls):
        name = utils.random_string()
        params = {'name': name}
        cls.domain = cls.identity_v1.Domain.create(
            params, metadata=(('token', cls.owner_token), ))

    @classmethod
    def _create_api_key(cls):
        params = {'domain_id': cls.domain.domain_id}
        api_key_info = cls.identity_v1.APIKey.create(
            params, metadata=(('token', cls.owner_token), ))
        cls.api_key_info = api_key_info
        cls.api_key = api_key_info.api_key

    @classmethod
    def _create_domain_owner(cls):
        cls.owner_id = utils.random_string()

        params = {
            'owner_id': cls.owner_id,
            'password': cls.owner_pw,
            'domain_id': cls.domain.domain_id
        }

        owner = cls.identity_v1.DomainOwner.create(params)
        cls.domain_owner = owner

    @classmethod
    def _issue_owner_token(cls):
        token_param = {
            'user_type': 'DOMAIN_OWNER',
            'user_id': cls.owner_id,
            'credentials': {
                'password': cls.owner_pw
            },
            'domain_id': cls.domain.domain_id
        }

        issue_token = cls.identity_v1.Token.issue(token_param)
        cls.owner_token = issue_token.access_token

    def setUp(self):
        self.user = None
        self.user_params = None
        self.token = None

    def tearDown(self):
        if self.user:
            print(f'[tearDown] Delete User. {self.user.user_id}')
            self.identity_v1.User.delete(
                {
                    'user_id': self.user.user_id,
                    'domain_id': self.domain.domain_id
                },
                metadata=(('token', self.owner_token), ))

    def _print_data(self, message, description=None):
        print()
        if description:
            print(f'[ {description} ]')

        self.pp.pprint(MessageToDict(message,
                                     preserving_proto_field_name=True))

    def _create_user(self, user_type=None, backend=None):
        self.user_params = {
            'user_id': utils.random_string() + '@mz.co.kr',
            'password': utils.generate_password(),
            'name': 'Steven' + utils.random_string(),
            'timezone': 'Asia/Seoul',
            'user_type': user_type or 'USER',
            'backend': backend or 'LOCAL',
            'domain_id': self.domain.domain_id
        }
        self.user = self.identity_v1.User.create(
            self.user_params, metadata=(('token', self.owner_token), ))

        self._print_data(self.user, '_create_user')

    def _issue_token(self):
        params = {
            'user_id': self.user.user_id,
            'credentials': {
                'password': self.user_params['password']
            },
            'domain_id': self.domain.domain_id
        }

        self.token = self.identity_v1.Token.issue(params)

        decoded = JWTUtil.unverified_decode(self.token.access_token)
        print()
        print('[ _issue_token: decoded token ]')
        self.pp.pprint(decoded)

    def _get_user(self):
        params = {'user_id': self.user.user_id}

        user = self.identity_v1.User.get(
            params, metadata=(('token', self.token.access_token), ))
        self._print_data(user, '_get_user')

    def test_id_pw_authentication(self):
        self._create_user()
        self._issue_token()

        self._get_user()

    def test_get_public_key(self):
        params = {'domain_id': self.domain.domain_id}
        secret = self.identity_v1.Domain.get_public_key(params)
        self.assertEqual(self.domain.domain_id, secret.domain_id)

        key = json.loads(secret.public_key)
        self.assertEqual("RSA", key['kty'])