initial import for Open Source 🎉
This commit is contained in:
parent
1898c361f3
commit
9c0dd3b722
2048 changed files with 218743 additions and 0 deletions
55
data/users/test/test_shared.py
Normal file
55
data/users/test/test_shared.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
import pytest
|
||||
|
||||
from mock import patch
|
||||
|
||||
from data.database import model
|
||||
from data.users.shared import can_create_user
|
||||
|
||||
from test.fixtures import *
|
||||
|
||||
@pytest.mark.parametrize('open_creation, invite_only, email, has_invite, can_create', [
|
||||
# Open user creation => always allowed.
|
||||
(True, False, None, False, True),
|
||||
|
||||
# Open user creation => always allowed.
|
||||
(True, False, 'foo@example.com', False, True),
|
||||
|
||||
# Invite only user creation + no invite => disallowed.
|
||||
(True, True, None, False, False),
|
||||
|
||||
# Invite only user creation + no invite => disallowed.
|
||||
(True, True, 'foo@example.com', False, False),
|
||||
|
||||
# Invite only user creation + invite => allowed.
|
||||
(True, True, 'foo@example.com', True, True),
|
||||
|
||||
# No open creation => Disallowed.
|
||||
(False, True, 'foo@example.com', False, False),
|
||||
(False, True, 'foo@example.com', True, False),
|
||||
|
||||
# Blacklisted emails => Disallowed.
|
||||
(True, False, 'foo@blacklisted.com', False, False),
|
||||
(True, False, 'foo@blacklisted.org', False, False),
|
||||
(True, False, 'foo@BlAcKlIsTeD.CoM', False, False), # Verify Capitalization
|
||||
(True, False, u'foo@mail.bLacklisted.Com', False, False), # Verify unicode
|
||||
(True, False, 'foo@blacklisted.net', False, True), # Avoid False Positives
|
||||
(True, False, 'foo@myblacklisted.com', False, True), # Avoid partial domain matches
|
||||
(True, False, 'fooATblacklisted.com', False, True), # Ignore invalid email addresses
|
||||
])
|
||||
@pytest.mark.parametrize('blacklisting_enabled', [True, False])
|
||||
def test_can_create_user(open_creation, invite_only, email, has_invite, can_create, blacklisting_enabled, app):
|
||||
|
||||
# Mock list of blacklisted domains
|
||||
blacklisted_domains = ['blacklisted.com', 'blacklisted.org']
|
||||
|
||||
if has_invite:
|
||||
inviter = model.user.get_user('devtable')
|
||||
team = model.team.get_organization_team('buynlarge', 'owners')
|
||||
model.team.add_or_invite_to_team(inviter, team, email=email)
|
||||
|
||||
with patch('features.USER_CREATION', open_creation):
|
||||
with patch('features.INVITE_ONLY_USER_CREATION', invite_only):
|
||||
with patch('features.BLACKLISTED_EMAILS', blacklisting_enabled):
|
||||
if email and any(domain in email.lower() for domain in blacklisted_domains) and not blacklisting_enabled:
|
||||
can_create = True # blacklisted domains can be used, if blacklisting is disabled
|
||||
assert can_create_user(email, blacklisted_domains) == can_create
|
Reference in a new issue