use same mailbox format for "POST /api/mailboxes" and "GET /api/mailboxes"

This commit is contained in:
Son NK 2020-11-03 11:22:01 +01:00
parent a989545505
commit 273537e7ae
3 changed files with 24 additions and 35 deletions

View File

@ -1260,14 +1260,16 @@ List of mailboxes. Each mailbox has id, email, default, creation_timestamp field
"id": 1, "id": 1,
"default": true, "default": true,
"creation_timestamp": 1590918512, "creation_timestamp": 1590918512,
"nb_alias": 10 "nb_alias": 10,
"verified": true
}, },
{ {
"email": "m1@example.com", "email": "m1@example.com",
"id": 2, "id": 2,
"default": false, "default": false,
"creation_timestamp": 1590918512, "creation_timestamp": 1590918512,
"nb_alias": 0 "nb_alias": 0,
"verified": false
} }
] ]
} }

View File

@ -15,6 +15,17 @@ from app.extensions import db
from app.models import Mailbox from app.models import Mailbox
def mailbox_to_dict(mailbox: Mailbox):
return {
"id": mailbox.id,
"email": mailbox.email,
"verified": mailbox.verified,
"default": mailbox.user.default_mailbox_id == mailbox.id,
"creation_timestamp": mailbox.created_at.timestamp,
"nb_alias": mailbox.nb_alias(),
}
@api_bp.route("/mailboxes", methods=["POST"]) @api_bp.route("/mailboxes", methods=["POST"])
@require_api_auth @require_api_auth
def create_mailbox(): def create_mailbox():
@ -23,11 +34,7 @@ def create_mailbox():
Input: Input:
email: in body email: in body
Output: Output:
the new mailbox the new mailbox dict
- id
- email
- verified
""" """
user = g.user user = g.user
mailbox_email = request.get_json().get("email").lower().strip().replace(" ", "") mailbox_email = request.get_json().get("email").lower().strip().replace(" ", "")
@ -49,12 +56,7 @@ def create_mailbox():
send_verification_email(user, new_mailbox) send_verification_email(user, new_mailbox)
return ( return (
jsonify( jsonify(mailbox_to_dict(new_mailbox)),
id=new_mailbox.id,
email=new_mailbox.email,
verified=new_mailbox.verified,
default=user.default_mailbox_id == new_mailbox.id,
),
201, 201,
) )
@ -153,27 +155,11 @@ def get_mailboxes():
""" """
Get mailboxes Get mailboxes
Output: Output:
- mailboxes: list of alias: - mailboxes: list of alias dict
- id
- email
- default: boolean - whether the mailbox is the default one
- creation_timestamp
- nb_alias
""" """
user = g.user user = g.user
return ( return (
jsonify( jsonify(mailboxes=[mailbox_to_dict(mb) for mb in user.mailboxes()]),
mailboxes=[
{
"id": mb.id,
"email": mb.email,
"default": user.default_mailbox_id == mb.id,
"creation_timestamp": mb.created_at.timestamp,
"nb_alias": mb.nb_alias(),
}
for mb in user.mailboxes()
]
),
200, 200,
) )

View File

@ -1,7 +1,3 @@
import json
from flask import url_for
from flask import url_for from flask import url_for
from app.extensions import db from app.extensions import db
@ -25,10 +21,13 @@ def test_create_mailbox(flask_client):
) )
assert r.status_code == 201 assert r.status_code == 201
# {'creation_timestamp': 1604398668, 'default': False, 'email': 'mailbox@gmail.com', 'id': 2, 'nb_alias': 0, 'verified': False}
assert r.json["email"] == "mailbox@gmail.com" assert r.json["email"] == "mailbox@gmail.com"
assert r.json["verified"] is False assert r.json["verified"] is False
assert r.json["id"] > 0 assert r.json["id"] > 0
assert r.json["default"] is False assert r.json["default"] is False
assert r.json["nb_alias"] == 0
def test_delete_mailbox(flask_client): def test_delete_mailbox(flask_client):
@ -183,9 +182,11 @@ def test_get_mailboxes(flask_client):
assert r.status_code == 200 assert r.status_code == 200
# m2@example.com is not returned as it's not verified # m2@example.com is not returned as it's not verified
assert len(r.json["mailboxes"]) == 2 assert len(r.json["mailboxes"]) == 2
for mb in r.json["mailboxes"]: for mb in r.json["mailboxes"]:
assert "email" in mb assert "email" in mb
assert "id" in mb assert "id" in mb
assert "default" in mb assert "default" in mb
assert "creation_timestamp" in mb assert "creation_timestamp" in mb
assert "nb_alias" in mb assert "nb_alias" in mb
assert "verified" in mb