def test_validate_roles(): from metrique.utils import validate_roles valid_roles = ['SELECT', 'ADMIN', 'WRITE'] OK = ['SELECT', 'ADMIN'] BAD = ['BLOWUP', 'ADMIN'] assert validate_roles(OK, valid_roles) == sorted(OK) try: validate_roles(BAD, valid_roles) == sorted(BAD) except ValueError: pass else: assert False, "Validated BAD role"
def share(self, with_user, roles=None, table=None): ''' Give cube access rights to another user Not, this method is NOT supported by SQLite3! ''' table = self.get_table(table) is_true(table is not None, 'invalid table: %s' % table) with_user = validate_username(with_user) roles = roles or ['SELECT'] roles = validate_roles(roles, self.VALID_SHARE_ROLES) roles = list2str(roles) logger.info('Sharing cube %s with %s (%s)' % (table, with_user, roles)) sql = 'GRANT %s ON %s TO %s' % (roles, table, with_user) return self.session_auto.execute(sql)