add GET /api/v2/mailboxes

This commit is contained in:
Son NK 2020-11-03 12:14:13 +01:00
parent 5ee74c74b6
commit 19ac657c1c
3 changed files with 48 additions and 4 deletions

View File

@ -1242,9 +1242,9 @@ Return 409 if contact is already added.
### Mailbox endpoints
#### GET /api/mailboxes
#### GET /api/v2/mailboxes
Get user verified mailboxes.
Get user's mailboxes, including unverified ones.
Input:
- `Authentication` header that contains the api key

View File

@ -153,9 +153,9 @@ def update_mailbox(mailbox_id):
@require_api_auth
def get_mailboxes():
"""
Get mailboxes
Get verified mailboxes
Output:
- mailboxes: list of alias dict
- mailboxes: list of mailbox dict
"""
user = g.user
@ -163,3 +163,23 @@ def get_mailboxes():
jsonify(mailboxes=[mailbox_to_dict(mb) for mb in user.mailboxes()]),
200,
)
@api_bp.route("/v2/mailboxes", methods=["GET"])
@require_api_auth
def get_mailboxes_v2():
"""
Get all mailboxes - including unverified mailboxes
Output:
- mailboxes: list of mailbox dict
"""
user = g.user
mailboxes = []
for mailbox in Mailbox.query.filter_by(user_id=user.id):
mailboxes.append(mailbox)
return (
jsonify(mailboxes=[mailbox_to_dict(mb) for mb in mailboxes]),
200,
)

View File

@ -2,6 +2,7 @@ from flask import url_for
from app.extensions import db
from app.models import User, ApiKey, Mailbox
from tests.utils import login
def test_create_mailbox(flask_client):
@ -190,3 +191,26 @@ def test_get_mailboxes(flask_client):
assert "creation_timestamp" in mb
assert "nb_alias" in mb
assert "verified" in mb
def test_get_mailboxes_v2(flask_client):
user = login(flask_client)
Mailbox.create(user_id=user.id, email="m1@example.com", verified=True)
Mailbox.create(user_id=user.id, email="m2@example.com", verified=False)
db.session.commit()
r = flask_client.get(
"/api/v2/mailboxes",
)
assert r.status_code == 200
# 3 mailboxes: the default, m1 and m2
assert len(r.json["mailboxes"]) == 3
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