Bladeren bron

add GET /api/v2/mailboxes

Son NK 4 jaren geleden
bovenliggende
commit
19ac657c1c
3 gewijzigde bestanden met toevoegingen van 48 en 4 verwijderingen
  1. 2 2
      README.md
  2. 22 2
      app/api/views/mailbox.py
  3. 24 0
      tests/api/test_mailbox.py

+ 2 - 2
README.md

@@ -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

+ 22 - 2
app/api/views/mailbox.py

@@ -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,
+    )

+ 24 - 0
tests/api/test_mailbox.py

@@ -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