POST /api/aliases/:alias_id/contacts: return 200 and `existed=true` if contact is already added.

This commit is contained in:
Son NK 2021-03-17 20:29:34 +01:00
parent 48d7b66803
commit c87fe55898
4 changed files with 12 additions and 7 deletions

View File

@ -83,7 +83,7 @@ def serialize_alias_info_v2(alias_info: AliasInfo) -> dict:
return res
def serialize_contact(contact: Contact) -> dict:
def serialize_contact(contact: Contact, existed=False) -> dict:
res = {
"id": contact.id,
"creation_date": contact.created_at.format(),
@ -93,6 +93,7 @@ def serialize_contact(contact: Contact) -> dict:
"contact": contact.website_email,
"reverse_alias": contact.website_send_to(),
"reverse_alias_address": contact.reply_email,
"existed": existed,
}
email_log: EmailLog = contact.last_reply()

View File

@ -408,8 +408,9 @@ def create_contact_route(alias_id):
contact_email = sanitize_email(contact_email)
# already been added
if Contact.get_by(alias_id=alias.id, website_email=contact_email):
return jsonify(error="Contact already added"), 409
contact = Contact.get_by(alias_id=alias.id, website_email=contact_email)
if contact:
return jsonify(**serialize_contact(contact, existed=True)), 200
contact = Contact.create(
user_id=alias.user_id,

View File

@ -526,7 +526,7 @@ Input:
Output:
If success, return 201
Return 409 if contact is already added.
Return 200 and `existed=true` if contact is already added.
```json
{
@ -537,7 +537,8 @@ Return 409 if contact is already added.
"last_email_sent_date": null,
"last_email_sent_timestamp": null,
"reverse_alias": "First Last first@example.com <ra+qytyzjhrumrreuszrbjxqjlkh@sl.local>",
"reverse_alias_address": "reply+bzvpazcdedcgcpztehxzgjgzmxskqa@sl.co"
"reverse_alias_address": "reply+bzvpazcdedcgcpztehxzgjgzmxskqa@sl.co",
"existed": false
}
```

View File

@ -523,14 +523,16 @@ def test_create_contact_route(flask_client):
assert r.json["last_email_sent_timestamp"] is None
assert r.json["reverse_alias"]
assert r.json["reverse_alias_address"]
assert r.json["existed"] is False
# re-add a contact, should return 409
# re-add a contact, should return 200
r = flask_client.post(
url_for("api.create_contact_route", alias_id=alias.id),
headers={"Authentication": api_key.code},
json={"contact": "First2 Last2 <first@example.com>"},
)
assert r.status_code == 409
assert r.status_code == 200
assert r.json["existed"]
def test_create_contact_route_empty_contact_address(flask_client):