mirror of
https://github.com/simple-login/app.git
synced 2024-11-10 21:27:10 +01:00
b849d1cfa7
* Export alias in csv * reformating * template * Improved contributing script and doc * Updated test * removed csv export from GDPR export archive * added test for new route * fix trailing space * moved test to new utils file
142 lines
4.4 KiB
Python
142 lines
4.4 KiB
Python
from app.db import Session
|
|
from app.import_utils import import_from_csv
|
|
from app.models import (
|
|
CustomDomain,
|
|
Mailbox,
|
|
Alias,
|
|
BatchImport,
|
|
File,
|
|
)
|
|
from tests.utils_test_alias import alias_export
|
|
from tests.utils import login, random_domain, random_token
|
|
|
|
|
|
def test_export(flask_client):
|
|
alias_export(flask_client, "api.export_aliases")
|
|
|
|
|
|
def test_import_no_mailboxes_no_domains(flask_client):
|
|
# Create user
|
|
user = login(flask_client)
|
|
|
|
# Check start state
|
|
assert len(Alias.filter_by(user_id=user.id).all()) == 1 # Onboarding alias
|
|
|
|
alias_data = [
|
|
"alias,note",
|
|
"ebay@my-domain.com,Used on eBay",
|
|
'facebook@my-domain.com,"Used on Facebook, Instagram."',
|
|
]
|
|
file = File.create(path=f"/{random_token()}", commit=True)
|
|
batch_import = BatchImport.create(user_id=user.id, file_id=file.id, commit=True)
|
|
|
|
import_from_csv(batch_import, user, alias_data)
|
|
|
|
# Should have failed to import anything new because my-domain.com isn't registered
|
|
assert len(Alias.filter_by(user_id=user.id).all()) == 1 # +0
|
|
|
|
|
|
def test_import_no_mailboxes(flask_client):
|
|
# Create user
|
|
user = login(flask_client)
|
|
|
|
# Check start state
|
|
assert len(Alias.filter_by(user_id=user.id).all()) == 1 # Onboarding alias
|
|
|
|
domain = random_domain()
|
|
# Create domain
|
|
CustomDomain.create(user_id=user.id, domain=domain, ownership_verified=True)
|
|
Session.commit()
|
|
|
|
alias_data = [
|
|
"alias,note",
|
|
f"ebay@{domain},Used on eBay",
|
|
f'facebook@{domain},"Used on Facebook, Instagram."',
|
|
]
|
|
|
|
file = File.create(path=f"/{random_token()}", commit=True)
|
|
batch_import = BatchImport.create(user_id=user.id, file_id=file.id)
|
|
|
|
import_from_csv(batch_import, user, alias_data)
|
|
|
|
assert len(Alias.filter_by(user_id=user.id).all()) == 3 # +2
|
|
|
|
|
|
def test_import_no_domains(flask_client):
|
|
# Create user
|
|
user = login(flask_client)
|
|
|
|
# Check start state
|
|
assert len(Alias.filter_by(user_id=user.id).all()) == 1 # Onboarding alias
|
|
|
|
alias_data = [
|
|
"alias,note,mailboxes",
|
|
"ebay@my-domain.com,Used on eBay,destination@my-destination-domain.com",
|
|
'facebook@my-domain.com,"Used on Facebook, Instagram.",destination1@my-destination-domain.com destination2@my-destination-domain.com',
|
|
]
|
|
|
|
file = File.create(path=f"/{random_token()}", commit=True)
|
|
batch_import = BatchImport.create(user_id=user.id, file_id=file.id)
|
|
|
|
import_from_csv(batch_import, user, alias_data)
|
|
|
|
# Should have failed to import anything new because my-domain.com isn't registered
|
|
assert len(Alias.filter_by(user_id=user.id).all()) == 1 # +0
|
|
|
|
|
|
def test_import(flask_client):
|
|
# Create user
|
|
user = login(flask_client)
|
|
|
|
# Check start state
|
|
assert len(Alias.filter_by(user_id=user.id).all()) == 1 # Onboarding alias
|
|
|
|
domain1 = random_domain()
|
|
domain2 = random_domain()
|
|
# Create domains
|
|
CustomDomain.create(user_id=user.id, domain=domain1, ownership_verified=True)
|
|
CustomDomain.create(user_id=user.id, domain=domain2, ownership_verified=True)
|
|
Session.commit()
|
|
|
|
# Create mailboxes
|
|
mailbox1 = Mailbox.create(
|
|
user_id=user.id, email=f"destination@{domain2}", verified=True
|
|
)
|
|
mailbox2 = Mailbox.create(
|
|
user_id=user.id, email=f"destination2@{domain2}", verified=True
|
|
)
|
|
Session.commit()
|
|
|
|
alias_data = [
|
|
"alias,note,mailboxes",
|
|
f"ebay@{domain1},Used on eBay,destination@{domain2}",
|
|
f'facebook@{domain1},"Used on Facebook, Instagram.",destination@{domain2} destination2@{domain2}',
|
|
]
|
|
|
|
file = File.create(path=f"/{random_token()}", commit=True)
|
|
batch_import = BatchImport.create(user_id=user.id, file_id=file.id)
|
|
|
|
import_from_csv(batch_import, user, alias_data)
|
|
|
|
aliases = Alias.filter_by(user_id=user.id).order_by(Alias.id).all()
|
|
assert len(aliases) == 3 # +2
|
|
|
|
# aliases[0] is the onboarding alias, skip it
|
|
|
|
# eBay alias
|
|
assert aliases[1].email == f"ebay@{domain1}"
|
|
assert len(aliases[1].mailboxes) == 1
|
|
# First one should be primary
|
|
assert aliases[1].mailbox_id == mailbox1.id
|
|
# Others are sorted
|
|
assert aliases[1].mailboxes[0] == mailbox1
|
|
|
|
# Facebook alias
|
|
assert aliases[2].email == f"facebook@{domain1}"
|
|
assert len(aliases[2].mailboxes) == 2
|
|
# First one should be primary
|
|
assert aliases[2].mailbox_id == mailbox1.id
|
|
# Others are sorted
|
|
assert aliases[2].mailboxes[0] == mailbox2
|
|
assert aliases[2].mailboxes[1] == mailbox1
|