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,
"default": true,
"creation_timestamp": 1590918512,
"nb_alias": 10
"nb_alias": 10,
"verified": true
},
{
"email": "m1@example.com",
"id": 2,
"default": false,
"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
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"])
@require_api_auth
def create_mailbox():
@ -23,11 +34,7 @@ def create_mailbox():
Input:
email: in body
Output:
the new mailbox
- id
- email
- verified
the new mailbox dict
"""
user = g.user
mailbox_email = request.get_json().get("email").lower().strip().replace(" ", "")
@ -49,12 +56,7 @@ def create_mailbox():
send_verification_email(user, new_mailbox)
return (
jsonify(
id=new_mailbox.id,
email=new_mailbox.email,
verified=new_mailbox.verified,
default=user.default_mailbox_id == new_mailbox.id,
),
jsonify(mailbox_to_dict(new_mailbox)),
201,
)
@ -153,27 +155,11 @@ def get_mailboxes():
"""
Get mailboxes
Output:
- mailboxes: list of alias:
- id
- email
- default: boolean - whether the mailbox is the default one
- creation_timestamp
- nb_alias
- mailboxes: list of alias dict
"""
user = g.user
return (
jsonify(
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()
]
),
jsonify(mailboxes=[mailbox_to_dict(mb) for mb in user.mailboxes()]),
200,
)

View File

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