4.65.3
Some checks failed
Build-Release-Image / Build-Image (linux/arm64) (push) Failing after 12m22s
Build-Release-Image / Build-Image (linux/amd64) (push) Has been cancelled
Build-Release-Image / Merge-Images (push) Has been cancelled
Build-Release-Image / Create-Release (push) Has been cancelled
Build-Release-Image / Notify (push) Has been cancelled
Some checks failed
Build-Release-Image / Build-Image (linux/arm64) (push) Failing after 12m22s
Build-Release-Image / Build-Image (linux/amd64) (push) Has been cancelled
Build-Release-Image / Merge-Images (push) Has been cancelled
Build-Release-Image / Create-Release (push) Has been cancelled
Build-Release-Image / Notify (push) Has been cancelled
This commit is contained in:
@ -3,7 +3,7 @@ from flask import url_for
|
||||
from app import config
|
||||
from app.db import Session
|
||||
from app.models import User, PartnerUser
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from tests.api.utils import get_new_user_and_api_key
|
||||
from tests.utils import login, random_token, random_email
|
||||
|
||||
|
@ -14,7 +14,7 @@ from app.models import (
|
||||
PartnerSubscription,
|
||||
User,
|
||||
)
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from tests.utils import create_new_user, random_token
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
from app.events.event_dispatcher import Dispatcher
|
||||
from app.events.generated import event_pb2
|
||||
from app.models import PartnerUser, User
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from tests.utils import create_new_user, random_token
|
||||
from typing import Tuple
|
||||
|
||||
|
@ -4,7 +4,7 @@ from app import config
|
||||
from app.events.generated.event_pb2 import EventContent, AliasDeleted
|
||||
from app.jobs.send_event_job import SendEventToWebhookJob
|
||||
from app.models import PartnerUser
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from events.event_sink import ConsoleEventSink
|
||||
from tests.utils import create_new_user, random_token
|
||||
|
||||
|
37
app/tests/models/test_mailbox.py
Normal file
37
app/tests/models/test_mailbox.py
Normal file
@ -0,0 +1,37 @@
|
||||
from app import config
|
||||
from app.dns_utils import set_global_dns_client, InMemoryDNSClient
|
||||
from app.email_utils import get_email_local_part
|
||||
from app.models import Mailbox
|
||||
from tests.utils import create_new_user, random_email
|
||||
|
||||
dns_client = InMemoryDNSClient()
|
||||
|
||||
|
||||
def setup_module():
|
||||
set_global_dns_client(dns_client)
|
||||
|
||||
|
||||
def teardown_module():
|
||||
set_global_dns_client(None)
|
||||
|
||||
|
||||
def test_is_proton_with_email_domain():
|
||||
user = create_new_user()
|
||||
mailbox = Mailbox.create(
|
||||
user_id=user.id, email=f"test@{config.PROTON_EMAIL_DOMAINS[0]}"
|
||||
)
|
||||
assert mailbox.is_proton()
|
||||
mailbox = Mailbox.create(user_id=user.id, email="a@b.c")
|
||||
assert not mailbox.is_proton()
|
||||
|
||||
|
||||
def test_is_proton_with_mx_domain():
|
||||
email = random_email()
|
||||
dns_client.set_mx_records(
|
||||
get_email_local_part(email), {10: config.PROTON_MX_SERVERS}
|
||||
)
|
||||
user = create_new_user()
|
||||
mailbox = Mailbox.create(user_id=user.id, email=email)
|
||||
assert mailbox.is_proton()
|
||||
dns_client.set_mx_records(get_email_local_part(email), {10: ["nowhere.net"]})
|
||||
assert not mailbox.is_proton()
|
@ -2,7 +2,7 @@ import arrow
|
||||
from app import config
|
||||
from app.db import Session
|
||||
from app.models import User, Job, PartnerSubscription, PartnerUser, ManualSubscription
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from tests.utils import random_email, random_token
|
||||
|
||||
|
||||
|
@ -7,7 +7,7 @@ from app.account_linking import (
|
||||
)
|
||||
from app.db import Session
|
||||
from app.models import User, PartnerUser, PartnerSubscription
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from app.utils import random_string
|
||||
from tests.utils import random_email
|
||||
|
||||
|
@ -11,7 +11,7 @@ from app.proton.proton_callback_handler import (
|
||||
generate_account_not_allowed_to_log_in,
|
||||
)
|
||||
from app.models import User, PartnerUser, Job, JobState
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from app.utils import random_string
|
||||
from typing import Optional
|
||||
from tests.utils import random_email
|
||||
|
@ -19,7 +19,7 @@ from app.account_linking import (
|
||||
from app.db import Session
|
||||
from app.errors import AccountAlreadyLinkedToAnotherPartnerException
|
||||
from app.models import Partner, PartnerUser, User, UserAuditLog
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from app.user_audit_log_utils import UserAuditLogAction
|
||||
from app.utils import random_string, canonicalize_email
|
||||
from tests.utils import random_email
|
||||
|
@ -3,7 +3,7 @@ import re
|
||||
from app.alias_suffix import get_alias_suffixes
|
||||
from app.db import Session
|
||||
from app.models import SLDomain, PartnerUser, AliasOptions, CustomDomain
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from init_app import add_sl_domains
|
||||
from tests.utils import create_new_user, random_token
|
||||
|
||||
|
@ -18,7 +18,7 @@ from app.models import (
|
||||
PartnerSubscription,
|
||||
PartnerUser,
|
||||
)
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from tests.utils import create_new_user, random_string, random_email
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@ from app.custom_domain_validation import CustomDomainValidation
|
||||
from app.db import Session
|
||||
from app.dns_utils import InMemoryDNSClient
|
||||
from app.models import CustomDomain, User
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from app.utils import random_string
|
||||
from tests.utils import create_new_user, random_domain
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
from app.db import Session
|
||||
from app.models import SLDomain, PartnerUser, AliasOptions
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from init_app import add_sl_domains
|
||||
from tests.utils import create_new_user, random_token
|
||||
|
||||
|
@ -25,7 +25,6 @@ from app.user_audit_log_utils import UserAuditLogAction
|
||||
from app.utils import random_string, canonicalize_email
|
||||
from tests.utils import create_new_user, random_email
|
||||
|
||||
|
||||
user: Optional[User] = None
|
||||
|
||||
|
||||
@ -598,3 +597,47 @@ def test_change_mailbox_verified_address(flask_client):
|
||||
assert changed_mailbox.email == mail2
|
||||
assert out.activation is None
|
||||
assert 0 == len(mail_sender.get_stored_emails())
|
||||
|
||||
|
||||
def test_change_mailbox_email_duplicate(flask_client):
|
||||
user = create_new_user()
|
||||
domain = f"{random_string(10)}.com"
|
||||
mail1 = f"mail_1@{domain}"
|
||||
mbox = Mailbox.create(email=mail1, user_id=user.id, verified=True, flush=True)
|
||||
mail2 = f"mail_2@{domain}"
|
||||
request_mailbox_email_change(user, mbox, mail2, email_ownership_verified=True)
|
||||
with pytest.raises(mailbox_utils.MailboxError):
|
||||
request_mailbox_email_change(user, mbox, mail2, email_ownership_verified=True)
|
||||
|
||||
|
||||
def test_change_mailbox_email_duplicate_in_another_mailbox(flask_client):
|
||||
user = create_new_user()
|
||||
domain = f"{random_string(10)}.com"
|
||||
mail1 = f"mail_1@{domain}"
|
||||
mbox1 = Mailbox.create(email=mail1, user_id=user.id, verified=True, flush=True)
|
||||
mail2 = f"mail_2@{domain}"
|
||||
mbox2 = Mailbox.create(email=mail2, user_id=user.id, verified=True, flush=True)
|
||||
mail3 = f"mail_3@{domain}"
|
||||
request_mailbox_email_change(user, mbox1, mail3)
|
||||
with pytest.raises(mailbox_utils.MailboxError):
|
||||
request_mailbox_email_change(user, mbox2, mail3)
|
||||
|
||||
|
||||
def test_change_mailbox_verified_email_clears_pending_email(flask_client):
|
||||
user = create_new_user()
|
||||
domain = f"{random_string(10)}.com"
|
||||
mail = f"mail_1@{domain}"
|
||||
mbox1 = Mailbox.create(
|
||||
email=mail,
|
||||
new_email=f"oldpending_{mail}",
|
||||
user_id=user.id,
|
||||
verified=True,
|
||||
flush=True,
|
||||
)
|
||||
new_email = f"new_{mail}"
|
||||
out = request_mailbox_email_change(
|
||||
user, mbox1, new_email, email_ownership_verified=True
|
||||
)
|
||||
assert out.activation is None
|
||||
assert out.mailbox.email == new_email
|
||||
assert out.mailbox.new_email is None
|
||||
|
@ -10,7 +10,7 @@ import jinja2
|
||||
from flask import url_for
|
||||
|
||||
from app.models import User, PartnerUser
|
||||
from app.proton.utils import get_proton_partner
|
||||
from app.proton.proton_partner import get_proton_partner
|
||||
from app.utils import random_string
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user