mirror of
https://github.com/getredash/redash.git
synced 2025-12-19 17:37:19 -05:00
Set is_admin of user based on ADMINS list.
This commit is contained in:
@@ -76,7 +76,8 @@ def create_and_login_user(app, openid_user):
|
||||
user.save()
|
||||
except models.User.DoesNotExist:
|
||||
logger.debug("Creating user object (%r)", openid_user.name)
|
||||
user = models.User.create(name=openid_user.name, email=openid_user.email)
|
||||
user = models.User.create(name=openid_user.name, email=openid_user.email,
|
||||
is_admin=(openid_user.email in settings.ADMINS))
|
||||
|
||||
login_user(user, remember=True)
|
||||
|
||||
|
||||
@@ -34,13 +34,29 @@ class TestCreateAndLoginUser(BaseTestCase):
|
||||
login_user_mock.assert_called_once_with(user, remember=True)
|
||||
|
||||
def test_creates_vaild_new_user(self):
|
||||
user = ObjectDict({'email': 'test@example.com', 'name': 'Test User'})
|
||||
openid_user = ObjectDict({'email': 'test@example.com', 'name': 'Test User'})
|
||||
|
||||
with patch.object(settings, 'GOOGLE_APPS_DOMAIN', 'example.com'), patch('redash.authentication.login_user') as login_user_mock:
|
||||
create_and_login_user(None, user)
|
||||
with patch.multiple(settings, GOOGLE_APPS_DOMAIN='example.com', ADMINS=['admin@example.com']), \
|
||||
patch('redash.authentication.login_user') as login_user_mock:
|
||||
|
||||
create_and_login_user(None, openid_user)
|
||||
|
||||
self.assertEqual(models.User.select().count(), 1)
|
||||
self.assertTrue(login_user_mock.called)
|
||||
user = models.User.get(models.User.email == openid_user.email)
|
||||
|
||||
self.assertFalse(user.is_admin)
|
||||
|
||||
def test_creates_vaild_new_user_and_sets_is_admin(self):
|
||||
openid_user = ObjectDict({'email': 'admin@example.com', 'name': 'Test User'})
|
||||
|
||||
with patch.multiple(settings, GOOGLE_APPS_DOMAIN='example.com', ADMINS=['admin@example.com']), \
|
||||
patch('redash.authentication.login_user') as login_user_mock:
|
||||
|
||||
create_and_login_user(None, openid_user)
|
||||
|
||||
self.assertTrue(login_user_mock.called)
|
||||
user = models.User.get(models.User.email == openid_user.email)
|
||||
self.assertTrue(user.is_admin)
|
||||
|
||||
def test_ignores_invliad_user(self):
|
||||
user = ObjectDict({'email': 'test@whatever.com'})
|
||||
|
||||
Reference in New Issue
Block a user