mirror of
https://github.com/simple-login/app.git
synced 2024-11-16 00:48:32 +01:00
81eb56e213
* Set up npm clean install instead of npm install in order to keep the version of npm packages 🎨
* Add option to transfer the alias to a new mailbox when a mailbox is deleted
* Moved alias transfer to job
* Lint
* Update forms
* Revert dockerfile change
Co-authored-by: ewen <ewen.coppens@a1.digital>
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
90 lines
3 KiB
Python
90 lines
3 KiB
Python
from sqlalchemy_utils.types.arrow import arrow
|
|
|
|
from app.config import JOB_DELETE_MAILBOX
|
|
from app.db import Session
|
|
from app.mail_sender import mail_sender
|
|
from app.models import Alias, Mailbox, Job, AliasMailbox
|
|
from job_runner import delete_mailbox_job
|
|
from tests.utils import create_new_user, random_email
|
|
|
|
|
|
@mail_sender.store_emails_test_decorator
|
|
def test_delete_mailbox_transfer_mailbox_primary(flask_client):
|
|
user = create_new_user()
|
|
m1 = Mailbox.create(
|
|
user_id=user.id, email=random_email(), verified=True, flush=True
|
|
)
|
|
m2 = Mailbox.create(
|
|
user_id=user.id, email=random_email(), verified=True, flush=True
|
|
)
|
|
|
|
alias_id = Alias.create_new(user, "prefix", mailbox_id=m1.id).id
|
|
AliasMailbox.create(alias_id=alias_id, mailbox_id=m2.id)
|
|
job = Job.create(
|
|
name=JOB_DELETE_MAILBOX,
|
|
payload={"mailbox_id": m1.id, "transfer_mailbox_id": m2.id},
|
|
run_at=arrow.now(),
|
|
commit=True,
|
|
)
|
|
Session.commit()
|
|
delete_mailbox_job(job)
|
|
alias = Alias.get(alias_id)
|
|
assert alias.mailbox_id == m2.id
|
|
assert len(alias._mailboxes) == 0
|
|
mails_sent = mail_sender.get_stored_emails()
|
|
assert len(mails_sent) == 1
|
|
assert str(mails_sent[0].msg).find("alias have been transferred") > -1
|
|
|
|
|
|
@mail_sender.store_emails_test_decorator
|
|
def test_delete_mailbox_transfer_mailbox_in_list(flask_client):
|
|
user = create_new_user()
|
|
m1 = Mailbox.create(
|
|
user_id=user.id, email=random_email(), verified=True, flush=True
|
|
)
|
|
m2 = Mailbox.create(
|
|
user_id=user.id, email=random_email(), verified=True, flush=True
|
|
)
|
|
m3 = Mailbox.create(
|
|
user_id=user.id, email=random_email(), verified=True, flush=True
|
|
)
|
|
|
|
alias_id = Alias.create_new(user, "prefix", mailbox_id=m1.id).id
|
|
AliasMailbox.create(alias_id=alias_id, mailbox_id=m2.id)
|
|
job = Job.create(
|
|
name=JOB_DELETE_MAILBOX,
|
|
payload={"mailbox_id": m2.id, "transfer_mailbox_id": m3.id},
|
|
run_at=arrow.now(),
|
|
commit=True,
|
|
)
|
|
Session.commit()
|
|
delete_mailbox_job(job)
|
|
alias = Alias.get(alias_id)
|
|
assert alias.mailbox_id == m1.id
|
|
assert len(alias._mailboxes) == 1
|
|
assert alias._mailboxes[0].id == m3.id
|
|
mails_sent = mail_sender.get_stored_emails()
|
|
assert len(mails_sent) == 1
|
|
assert str(mails_sent[0].msg).find("alias have been transferred") > -1
|
|
|
|
|
|
@mail_sender.store_emails_test_decorator
|
|
def test_delete_mailbox_no_transfer(flask_client):
|
|
user = create_new_user()
|
|
m1 = Mailbox.create(
|
|
user_id=user.id, email=random_email(), verified=True, flush=True
|
|
)
|
|
|
|
alias_id = Alias.create_new(user, "prefix", mailbox_id=m1.id).id
|
|
job = Job.create(
|
|
name=JOB_DELETE_MAILBOX,
|
|
payload={"mailbox_id": m1.id},
|
|
run_at=arrow.now(),
|
|
commit=True,
|
|
)
|
|
Session.commit()
|
|
delete_mailbox_job(job)
|
|
assert Alias.get(alias_id) is None
|
|
mails_sent = mail_sender.get_stored_emails()
|
|
assert len(mails_sent) == 1
|
|
assert str(mails_sent[0].msg).find("along with its aliases have been deleted") > -1
|