mirror of
https://github.com/valitydev/redash.git
synced 2024-11-07 17:38:54 +00:00
66 lines
2.9 KiB
Python
66 lines
2.9 KiB
Python
from unittest import TestCase
|
|
from mock import patch
|
|
from flask_googleauth import ObjectDict
|
|
from tests import BaseTestCase
|
|
from redash.authentication import validate_email, create_and_login_user
|
|
from redash import settings, models
|
|
from tests.factories import user_factory
|
|
|
|
|
|
class TestEmailValidation(TestCase):
|
|
def test_accepts_address_with_correct_domain(self):
|
|
with patch.object(settings, 'GOOGLE_APPS_DOMAIN', 'example.com'):
|
|
self.assertTrue(validate_email('example@example.com'))
|
|
|
|
def test_accepts_address_from_exception_list(self):
|
|
with patch.multiple(settings, GOOGLE_APPS_DOMAIN='example.com', ALLOWED_EXTERNAL_USERS=['whatever@whatever.com']):
|
|
self.assertTrue(validate_email('whatever@whatever.com'))
|
|
|
|
def test_accept_any_address_when_domain_empty(self):
|
|
with patch.object(settings, 'GOOGLE_APPS_DOMAIN', None):
|
|
self.assertTrue(validate_email('whatever@whatever.com'))
|
|
|
|
def test_rejects_address_with_incorrect_domain(self):
|
|
with patch.object(settings, 'GOOGLE_APPS_DOMAIN', 'example.com'):
|
|
self.assertFalse(validate_email('whatever@whatever.com'))
|
|
|
|
|
|
class TestCreateAndLoginUser(BaseTestCase):
|
|
def test_logins_valid_user(self):
|
|
user = user_factory.create(email='test@example.com')
|
|
|
|
with patch.object(settings, 'GOOGLE_APPS_DOMAIN', 'example.com'), patch('redash.authentication.login_user') as login_user_mock:
|
|
create_and_login_user(None, user)
|
|
login_user_mock.assert_called_once_with(user, remember=True)
|
|
|
|
def test_creates_vaild_new_user(self):
|
|
openid_user = ObjectDict({'email': 'test@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.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'})
|
|
|
|
with patch.object(settings, 'GOOGLE_APPS_DOMAIN', 'example.com'), patch('redash.authentication.login_user') as login_user_mock:
|
|
create_and_login_user(None, user)
|
|
self.assertFalse(login_user_mock.called) |