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.email_utils import get_email_domain_part
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
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
alias_data = [
'alias,note,enabled',
'ebay@my-domain.com,Used on eBay,True',
'facebook@my-domain.com,"Used on Facebook, Instagram.",True'
'alias,note',
'ebay@my-domain.com,Used on eBay',
'facebook@my-domain.com,"Used on Facebook, Instagram."'
]
batch_import = BatchImport.create(
@ -134,9 +134,9 @@ def test_import_no_mailboxes(flask_client):
db.session.commit()
alias_data = [
'alias,note,enabled',
'ebay@my-domain.com,Used on eBay,True',
'facebook@my-domain.com,"Used on Facebook, Instagram.",True'
'alias,note',
'ebay@my-domain.com,Used on eBay',
'facebook@my-domain.com,"Used on Facebook, Instagram."'
]
batch_import = BatchImport.create(
@ -147,3 +147,94 @@ def test_import_no_mailboxes(flask_client):
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'
]
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)