Complete import tests

This commit is contained in:
Sylvia van Os 2021-03-13 15:36:25 +01:00
parent dcfd63eb0f
commit 8800c29526
2 changed files with 98 additions and 7 deletions

View File

@ -6,7 +6,7 @@ import requests
from app import s3 from app import s3
from app.email_utils import get_email_domain_part from app.email_utils import get_email_domain_part
from app.extensions import db from app.extensions import db
from app.models import Alias, BatchImport, CustomDomain, DeletedAlias, DomainDeletedAlias, User from app.models import Alias, AliasMailbox, BatchImport, CustomDomain, DeletedAlias, DomainDeletedAlias, Mailbox, User
from app.utils import sanitize_email from app.utils import sanitize_email
def handle_batch_import(batch_import: BatchImport): def handle_batch_import(batch_import: BatchImport):

View File

@ -103,9 +103,9 @@ def test_import_no_mailboxes_no_domains(flask_client):
assert(len(Alias.filter_by(user_id=user.id).all()) == 1) # Onboarding alias assert(len(Alias.filter_by(user_id=user.id).all()) == 1) # Onboarding alias
alias_data = [ alias_data = [
'alias,note,enabled', 'alias,note',
'ebay@my-domain.com,Used on eBay,True', 'ebay@my-domain.com,Used on eBay',
'facebook@my-domain.com,"Used on Facebook, Instagram.",True' 'facebook@my-domain.com,"Used on Facebook, Instagram."'
] ]
batch_import = BatchImport.create( batch_import = BatchImport.create(
@ -134,9 +134,9 @@ def test_import_no_mailboxes(flask_client):
db.session.commit() db.session.commit()
alias_data = [ alias_data = [
'alias,note,enabled', 'alias,note',
'ebay@my-domain.com,Used on eBay,True', 'ebay@my-domain.com,Used on eBay',
'facebook@my-domain.com,"Used on Facebook, Instagram.",True' 'facebook@my-domain.com,"Used on Facebook, Instagram."'
] ]
batch_import = BatchImport.create( batch_import = BatchImport.create(
@ -147,3 +147,94 @@ def test_import_no_mailboxes(flask_client):
import_from_csv(batch_import, user, alias_data) import_from_csv(batch_import, user, alias_data)
assert(len(Alias.filter_by(user_id=user.id).all()) == 3) # +2 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'
]
batch_import = BatchImport.create(
user_id=user.id,
file_id=0
)
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
# Create domains
domain1 = CustomDomain.create(
user_id=user.id,
domain="my-domain.com",
verified=True
)
domain2 = CustomDomain.create(
user_id=user.id,
domain="my-destination-domain.com",
verified=True
)
db.session.commit()
# Create mailboxes
mailbox1 = Mailbox.create(
user_id=user.id,
email="destination@my-destination-domain.com",
verified=True
)
mailbox2 = Mailbox.create(
user_id=user.id,
email="destination2@my-destination-domain.com",
verified=True
)
db.session.commit()
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.",destination@my-destination-domain.com destination2@my-destination-domain.com'
]
batch_import = BatchImport.create(
user_id=user.id,
file_id=0
)
import_from_csv(batch_import, user, alias_data)
aliases = Alias.filter_by(user_id=user.id).all()
assert(len(aliases) == 3) # +2
# aliases[0] is the onboarding alias, skip it
# eBay alias
assert(aliases[1].email == "ebay@my-domain.com")
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 == "facebook@my-domain.com")
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)