def test_get_alias_infos_with_pagination_v3_no_duplicate_when_empty_contact( flask_client, ): """ Make sure an alias is returned once when it has 2 contacts that have no email log activity """ user = create_user(flask_client) alias = Alias.first() Contact.create( user_id=user.id, alias_id=alias.id, website_email="*****@*****.**", reply_email="*****@*****.**", ) Contact.create( user_id=user.id, alias_id=alias.id, website_email="*****@*****.**", reply_email="*****@*****.**", ) alias_infos = get_alias_infos_with_pagination_v3(user) assert len(alias_infos) == 1
def test_disable_alias(flask_client): login(flask_client) alias = Alias.first() assert alias.enabled flask_client.post(f"/dashboard/unsubscribe/{alias.id}") assert not alias.enabled
def test_create_contact_route_invalid_contact_email(flask_client): login(flask_client) alias = Alias.first() r = flask_client.post( url_for("api.create_contact_route", alias_id=alias.id), json={"contact": "@gmail.com"}, ) assert r.status_code == 400 assert r.json["error"] == "invalid contact email @gmail.com"
def test_create_contact_route_empty_contact_address(flask_client): login(flask_client) alias = Alias.first() r = flask_client.post( url_for("api.create_contact_route", alias_id=alias.id), json={"contact": ""}, ) assert r.status_code == 400 assert r.json["error"] == "Contact cannot be empty"
def test_get_alias_infos_with_pagination_v3_query_alias_mailbox(flask_client): """test the query on the alias mailbox email""" user = User.create( email="[email protected]", password="******", name="Test User", activated=True, commit=True, ) alias = Alias.first() alias_infos = get_alias_infos_with_pagination_v3(user, mailbox_id=alias.mailbox_id) assert len(alias_infos) == 1
def test_update_pinned(flask_client): login(flask_client) alias = Alias.first() assert not alias.pinned r = flask_client.patch( url_for("api.update_alias", alias_id=alias.id), json={"pinned": True}, ) assert r.status_code == 200 assert alias.pinned
def test_add_contact_success(flask_client): login(flask_client) alias = Alias.first() assert Contact.query.count() == 0 # <<< Create a new contact >>> flask_client.post( url_for("dashboard.alias_contact_manager", alias_id=alias.id), data={ "form-name": "create", "email": "*****@*****.**", }, follow_redirects=True, ) # a new contact is added assert Contact.query.count() == 1 contact = Contact.first() assert contact.website_email == "*****@*****.**" # <<< Create a new contact using a full email format >>> flask_client.post( url_for("dashboard.alias_contact_manager", alias_id=alias.id), data={ "form-name": "create", "email": "First Last <*****@*****.**>", }, follow_redirects=True, ) # a new contact is added assert Contact.query.count() == 2 contact = Contact.get(2) assert contact.website_email == "*****@*****.**" assert contact.name == "First Last" # <<< Create a new contact with invalid email address >>> r = flask_client.post( url_for("dashboard.alias_contact_manager", alias_id=alias.id), data={ "form-name": "create", "email": "with [email protected]", }, follow_redirects=True, ) # no new contact is added assert Contact.query.count() == 2 assert "Invalid email format. Email must be either [email protected]" in str( r.data)
def test_new_addr_at_only_sender_format(flask_client): user = login(flask_client) user.sender_format = SenderFormatEnum.AT_ONLY.value Session.commit() alias = Alias.first() contact = Contact.create( user_id=user.id, alias_id=alias.id, website_email="*****@*****.**", reply_email="rep@SL", name="First Last", commit=True, ) assert contact.new_addr() == '"abcd at example.com" <rep@SL>'
def test_get_alias_infos_with_pagination_v3_query_alias_note(flask_client): """test the query on the alias note""" user = User.create( email="[email protected]", password="******", name="Test User", activated=True, commit=True, ) alias = Alias.first() alias.note = "test note" Session.commit() alias_infos = get_alias_infos_with_pagination_v3(user, query="test note") assert len(alias_infos) == 1
def test_get_alias_infos_with_pagination_v3_query_alias_email(flask_client): """test the query on the alias email""" user = User.create( email="[email protected]", password="******", name="Test User", activated=True, commit=True, ) alias = Alias.first() alias_infos = get_alias_infos_with_pagination_v3(user, query=alias.email) assert len(alias_infos) == 1 alias_infos = get_alias_infos_with_pagination_v3(user, query="no match") assert len(alias_infos) == 0
def test_block_contact(flask_client): user = login(flask_client) alias = Alias.first() contact = Contact.create( user_id=user.id, alias_id=alias.id, website_email="*****@*****.**", reply_email="re1@SL", commit=True, ) assert not contact.block_forward flask_client.post(f"/dashboard/block_contact/{contact.id}") assert contact.block_forward # make sure the page loads flask_client.get(f"/dashboard/block_contact/{contact.id}")
def test_new_addr_default_sender_format(flask_client): user = login(flask_client) alias = Alias.first() contact = Contact.create( user_id=user.id, alias_id=alias.id, website_email="*****@*****.**", reply_email="rep@SL", name="First Last", commit=True, ) assert contact.new_addr() == '"First Last - abcd at example.com" <rep@SL>' # Make sure email isn't duplicated if sender name equals email contact.name = "*****@*****.**" assert contact.new_addr() == '"abcd at example.com" <rep@SL>'
def test_get_alias_infos_with_pagination_v3_query_alias_mailboxes(flask_client): """test the query on the alias additional mailboxes""" user = User.create( email="[email protected]", password="******", name="Test User", activated=True, commit=True, ) alias = Alias.first() mb = Mailbox.create(user_id=user.id, email="*****@*****.**") alias._mailboxes.append(mb) Session.commit() alias_infos = get_alias_infos_with_pagination_v3(user, mailbox_id=mb.id) assert len(alias_infos) == 1 alias_infos = get_alias_infos_with_pagination_v3(user, query=alias.email) assert len(alias_infos) == 1
def test_get_alias_infos_with_pagination_v3_no_duplicate(flask_client): """When an alias belongs to multiple mailboxes, make sure get_alias_infos_with_pagination_v3 returns no duplicates """ user = User.create( email="[email protected]", password="******", name="Test User", activated=True, commit=True, ) alias = Alias.first() mb = Mailbox.create(user_id=user.id, email="*****@*****.**") alias._mailboxes.append(mb) Session.commit() alias_infos = get_alias_infos_with_pagination_v3(user) assert len(alias_infos) == 1
def test_new_addr_unicode(flask_client): user = login(flask_client) alias = Alias.first() contact = Contact.create( user_id=user.id, alias_id=alias.id, website_email="*****@*****.**", reply_email="rep@SL", name="Nhơn Nguyễn", commit=True, ) assert ( contact.new_addr() == "=?utf-8?q?Nh=C6=A1n_Nguy=E1=BB=85n_-_abcd_at_example=2Ecom?= <rep@SL>" ) # sanity check assert parse_full_address(contact.new_addr()) == ( "Nhơn Nguyễn - abcd at example.com", "rep@sl", )
def test_get_alias_infos_with_pagination_v3(flask_client): user = User.create( email="[email protected]", password="******", name="Test User", activated=True, commit=True, ) # user has 1 alias that's automatically created when the account is created alias_infos = get_alias_infos_with_pagination_v3(user) assert len(alias_infos) == 1 alias_info = alias_infos[0] alias = Alias.first() assert alias_info.alias == alias assert alias_info.mailbox == user.default_mailbox assert alias_info.mailboxes == [user.default_mailbox] assert alias_info.nb_forward == 0 assert alias_info.nb_blocked == 0 assert alias_info.nb_reply == 0 assert alias_info.latest_email_log is None assert alias_info.latest_contact is None