mirror of
https://github.com/simple-login/app.git
synced 2024-09-21 09:21:29 +02:00
* Move set default alias to a separate method to reuse it * Add tests * Find domains by domain not by id * Revert models and setting changes * Remove non required function
129 lines
3.9 KiB
Python
129 lines
3.9 KiB
Python
import pytest
|
|
|
|
from app import user_settings
|
|
from app.db import Session
|
|
from app.models import User, CustomDomain, SLDomain
|
|
from tests.utils import random_token, create_new_user
|
|
|
|
user_id: int = 0
|
|
custom_domain_name: str = ""
|
|
sl_domain_name: str = ""
|
|
|
|
|
|
def setup_module():
|
|
global user_id, custom_domain_name, sl_domain_name
|
|
user = create_new_user()
|
|
user.trial_end = None
|
|
user_id = user.id
|
|
custom_domain_name = CustomDomain.create(
|
|
user_id=user_id,
|
|
catch_all=True,
|
|
domain=random_token() + ".com",
|
|
verified=True,
|
|
flush=True,
|
|
).domain
|
|
sl_domain_name = SLDomain.create(
|
|
domain=random_token() + ".com",
|
|
premium_only=False,
|
|
flush=True,
|
|
order=5,
|
|
hidden=False,
|
|
).domain
|
|
|
|
|
|
def test_set_default_no_domain():
|
|
user = User.get(user_id)
|
|
user.default_alias_public_domain_id = SLDomain.get_by(domain=sl_domain_name).id
|
|
user.default_alias_private_domain_id = CustomDomain.get_by(
|
|
domain=custom_domain_name
|
|
).id
|
|
Session.flush()
|
|
user_settings.set_default_alias_id(user, None)
|
|
assert user.default_alias_public_domain_id is None
|
|
assert user.default_alias_custom_domain_id is None
|
|
|
|
|
|
def test_set_premium_sl_domain_with_non_premium_user():
|
|
user = User.get(user_id)
|
|
user.lifetime = False
|
|
domain = SLDomain.get_by(domain=sl_domain_name)
|
|
domain.premium_only = True
|
|
Session.flush()
|
|
with pytest.raises(user_settings.CannotSetAlias):
|
|
user_settings.set_default_alias_id(user, sl_domain_name)
|
|
|
|
|
|
def test_set_hidden_sl_domain():
|
|
user = User.get(user_id)
|
|
domain = SLDomain.get_by(domain=sl_domain_name)
|
|
domain.hidden = True
|
|
domain.premium_only = False
|
|
Session.flush()
|
|
with pytest.raises(user_settings.CannotSetAlias):
|
|
user_settings.set_default_alias_id(user, sl_domain_name)
|
|
|
|
|
|
def test_set_sl_domain():
|
|
user = User.get(user_id)
|
|
user.lifetime = False
|
|
domain = SLDomain.get_by(domain=sl_domain_name)
|
|
domain.hidden = False
|
|
domain.premium_only = False
|
|
Session.flush()
|
|
user_settings.set_default_alias_id(user, sl_domain_name)
|
|
assert user.default_alias_public_domain_id == domain.id
|
|
assert user.default_alias_custom_domain_id is None
|
|
|
|
|
|
def test_set_sl_premium_domain():
|
|
user = User.get(user_id)
|
|
user.lifetime = True
|
|
domain = SLDomain.get_by(domain=sl_domain_name)
|
|
domain.hidden = False
|
|
domain.premium_only = True
|
|
Session.flush()
|
|
user_settings.set_default_alias_id(user, sl_domain_name)
|
|
assert user.default_alias_public_domain_id == domain.id
|
|
assert user.default_alias_custom_domain_id is None
|
|
|
|
|
|
def test_set_other_user_custom_domain():
|
|
user = User.get(user_id)
|
|
user.lifetime = True
|
|
other_user_domain_name = CustomDomain.create(
|
|
user_id=create_new_user().id,
|
|
catch_all=True,
|
|
domain=random_token() + ".com",
|
|
verified=True,
|
|
).domain
|
|
Session.flush()
|
|
with pytest.raises(user_settings.CannotSetAlias):
|
|
user_settings.set_default_alias_id(user, other_user_domain_name)
|
|
|
|
|
|
def test_set_unverified_custom_domain():
|
|
user = User.get(user_id)
|
|
user.lifetime = True
|
|
domain = CustomDomain.get_by(domain=custom_domain_name)
|
|
domain.verified = False
|
|
Session.flush()
|
|
with pytest.raises(user_settings.CannotSetAlias):
|
|
user_settings.set_default_alias_id(user, custom_domain_name)
|
|
|
|
|
|
def test_set_custom_domain():
|
|
user = User.get(user_id)
|
|
user.lifetime = True
|
|
domain = CustomDomain.get_by(domain=custom_domain_name)
|
|
domain.verified = True
|
|
Session.flush()
|
|
user_settings.set_default_alias_id(user, custom_domain_name)
|
|
assert user.default_alias_public_domain_id is None
|
|
assert user.default_alias_custom_domain_id == domain.id
|
|
|
|
|
|
def test_set_invalid_custom_domain():
|
|
user = User.get(user_id)
|
|
with pytest.raises(user_settings.CannotSetAlias):
|
|
user_settings.set_default_alias_id(user, "invalid_nop" + random_token())
|