diff --git a/app/models.py b/app/models.py index 5307b601..c7b6a0c3 100644 --- a/app/models.py +++ b/app/models.py @@ -67,8 +67,14 @@ class ModelMixin(object): @classmethod def create(cls, **kw): + # whether should call db.session.commit + commit = kw.pop("commit", False) + r = cls(**kw) db.session.add(r) + + if commit: + db.session.commit() return r def save(self): @@ -882,6 +888,9 @@ class Alias(db.Model, ModelMixin): @classmethod def create(cls, **kw): + # whether should call db.session.commit + commit = kw.pop("commit", False) + r = cls(**kw) email = kw["email"] @@ -896,6 +905,8 @@ class Alias(db.Model, ModelMixin): raise AliasInTrashError db.session.add(r) + if commit: + db.session.commit() return r @classmethod diff --git a/tests/api/test_alias.py b/tests/api/test_alias.py index 47614a63..7fa0bbee 100644 --- a/tests/api/test_alias.py +++ b/tests/api/test_alias.py @@ -7,9 +7,12 @@ from app.models import User, ApiKey, Alias, Contact, EmailLog, Mailbox def test_get_aliases_error_without_pagination(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() # create api_key api_key = ApiKey.create(user.id, "for test") @@ -25,9 +28,12 @@ def test_get_aliases_error_without_pagination(flask_client): def test_get_aliases_with_pagination(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() # create api_key api_key = ApiKey.create(user.id, "for test") diff --git a/tests/api/test_alias_options.py b/tests/api/test_alias_options.py index 539a21d3..d55530ed 100644 --- a/tests/api/test_alias_options.py +++ b/tests/api/test_alias_options.py @@ -6,9 +6,12 @@ from app.models import User, ApiKey, AliasUsedOn, Alias def test_different_scenarios(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() # create api_key api_key = ApiKey.create(user.id, "for test") diff --git a/tests/test_alias_utils.py b/tests/test_alias_utils.py index aa4d0194..ae684617 100644 --- a/tests/test_alias_utils.py +++ b/tests/test_alias_utils.py @@ -5,13 +5,18 @@ from app.models import User, Alias, DeletedAlias def test_delete_alias(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() alias = Alias.create( - user_id=user.id, email="first@d1.test", mailbox_id=user.default_mailbox_id + user_id=user.id, + email="first@d1.test", + mailbox_id=user.default_mailbox_id, + commit=True, ) - db.session.commit() assert Alias.get_by(email="first@d1.test") delete_alias(alias, user) @@ -22,13 +27,18 @@ def test_delete_alias(flask_client): def test_delete_alias_already_in_trash(flask_client): """delete an alias that's already in alias trash""" user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() alias = Alias.create( - user_id=user.id, email="first@d1.test", mailbox_id=user.default_mailbox_id + user_id=user.id, + email="first@d1.test", + mailbox_id=user.default_mailbox_id, + commit=True, ) - db.session.commit() # add the alias to global trash db.session.add(DeletedAlias(email=alias.email)) diff --git a/tests/test_models.py b/tests/test_models.py index e6938431..f3e5905f 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -28,9 +28,12 @@ def test_generate_email(flask_client): def test_profile_picture_url(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() assert user.profile_picture_url() == "http://sl.test/static/default-avatar.png" @@ -43,10 +46,9 @@ def test_suggested_emails_for_user_who_cannot_create_new_alias(flask_client): name="Test User", activated=True, trial_end=None, + commit=True, ) - db.session.commit() - # make sure user runs out of quota to create new email for i in range(MAX_NB_EMAIL_FREE_PLAN): Alias.create_new(user=user, prefix="test") @@ -64,9 +66,12 @@ def test_suggested_emails_for_user_who_cannot_create_new_alias(flask_client): def test_alias_create_random(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() alias = Alias.create_new_random(user) assert alias.email.endswith(EMAIL_DOMAIN) @@ -74,9 +79,12 @@ def test_alias_create_random(flask_client): def test_website_send_to(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() alias = Alias.create_new_random(user) db.session.commit() @@ -104,9 +112,12 @@ def test_website_send_to(flask_client): def test_new_addr(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() alias = Alias.create_new_random(user) db.session.commit() @@ -118,8 +129,8 @@ def test_new_addr(flask_client): website_email="abcd@example.com", reply_email="rep@SL", name="First Last", + commit=True, ) - db.session.commit() assert c1.new_addr() == '"abcd@example.com via SimpleLogin" ' # set sender_format = AT @@ -144,14 +155,22 @@ def test_new_addr(flask_client): def test_mailbox_delete(flask_client): user = User.create( - email="a@b.c", password="password", name="Test User", activated=True + email="a@b.c", + password="password", + name="Test User", + activated=True, + commit=True, ) - db.session.commit() - m1 = Mailbox.create(user_id=user.id, email="m1@example.com", verified=True) - m2 = Mailbox.create(user_id=user.id, email="m2@example.com", verified=True) - m3 = Mailbox.create(user_id=user.id, email="m3@example.com", verified=True) - db.session.commit() + m1 = Mailbox.create( + user_id=user.id, email="m1@example.com", verified=True, commit=True + ) + m2 = Mailbox.create( + user_id=user.id, email="m2@example.com", verified=True, commit=True + ) + m3 = Mailbox.create( + user_id=user.id, email="m3@example.com", verified=True, commit=True + ) # alias has 2 mailboxes alias = Alias.create_new(user, "prefix", mailbox_id=m1.id)