Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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"
Exemple #4
0
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"
Exemple #5
0
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
Exemple #7
0
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)
Exemple #8
0
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>'
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
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}")
Exemple #12
0
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>'
Exemple #13
0
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
Exemple #14
0
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
Exemple #15
0
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",
    )
Exemple #16
0
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