From 9be3eb528ac8772cb6156338c8dd4ea4e931fca0 Mon Sep 17 00:00:00 2001 From: Alix JEUDI--LEMOINE Date: Tue, 17 Jun 2025 15:48:28 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Add=20tests=20for=20image=20access?= =?UTF-8?q?=20permissions=20and=20metadata=20retrieval?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_images.py | 114 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/tests/test_images.py b/tests/test_images.py index f81c9f8..15d64ca 100644 --- a/tests/test_images.py +++ b/tests/test_images.py @@ -54,6 +54,24 @@ def test_get_image(token): assert response.status_code == 200 assert response.headers["content-type"] == "image/jpeg" +def test_get_image_without_permission(token): + image_id = add_test_image(token) + + response = client.get( + f"/image/{image_id}", + headers={"Authorization": f"Bearer {token}"} + ) + assert response.status_code == 403 + +def test_get_image_with_wrong_pin_id(token): + image_id = add_test_image(token) + + response = client.get( + f"/image/{image_id}", + headers={"Authorization": f"Bearer {token}"} + ) + assert response.status_code == 403 + def test_get_image_wrong_format(token): response = client.get( "/image/randomIdThatDoesntExists", @@ -94,9 +112,69 @@ def test_update_caption(token): headers={"Authorization": f"Bearer {token}"} ) assert response.status_code == 200 + +# # Vérifier que la légende a été mise à jour +# caption_response = client.get( +# f"/image/{image_id}/caption", +# headers={"Authorization": f"Bearer {token}"} +# ) +# assert caption_response.status_code == 200 +# assert caption_response.json()["caption"] == "Updated caption" + +# def test_get_caption(token): +# pin_id = create_test_pin(token) +# image_id = add_test_image(token, pin_id, "Test caption") +# print(pin_id, image_id) +# response = client.get( +# f"/image/{image_id}/caption", +# headers={"Authorization": f"Bearer {token}"} +# ) +# assert response.status_code == 200 +# data = response.json() +# print(data) +# print("CCCNQSDONQSOJNDJIOQSJDNQJOSNDOJNQSD") +# assert "caption" in data +# assert data["caption"] == "Test caption" + +def test_get_caption_unauthorized(token, token_second): + pin_id = create_test_pin(token) + image_id = add_test_image(token, pin_id) + + response = client.get( + f"/image/{image_id}/caption", + headers={"Authorization": f"Bearer {token_second}"} + ) + assert response.status_code == 403 + +def test_get_metadata(token): + pin_id = create_test_pin(token) + image_id = add_test_image(token, pin_id) + + response = client.get( + f"/image/{image_id}/metadata", + headers={"Authorization": f"Bearer {token}"} + ) + assert response.status_code == 200 + data = response.json() + assert "metadata" in data + assert "pin_id" in data + assert data["pin_id"] == pin_id + assert data["metadata"]["original_filename"] == "test.jpg" + assert data["metadata"]["mime_type"] == "image/jpeg" + +def test_get_metadata_unauthorized(token, token_second): + pin_id = create_test_pin(token) + image_id = add_test_image(token, pin_id) + + response = client.get( + f"/image/{image_id}/metadata", + headers={"Authorization": f"Bearer {token_second}"} + ) + assert response.status_code == 403 def test_image_permissions(token, token_second): - image_id = add_test_image(token) + pin_id = create_test_pin(token) + image_id = add_test_image(token, pin_id) response = client.get( f"/image/{image_id}", @@ -116,6 +194,40 @@ def test_invalid_image_type(token): ) assert response.status_code == 415 +def test_image_without_exif_date(token): + # Créer d'abord un pin pour l'image + pin_id = create_test_pin(token) + + test_image = create_test_image() + response = client.post( + f"/image/pin/{pin_id}/add", + files={"image": ("test.jpg", test_image, "image/jpeg")}, + data={"caption": "Test caption"}, + headers={"Authorization": f"Bearer {token}"} + ) + assert response.status_code == 200 + image_id = response.json()["id"] + + # Vérifier que la date a été générée automatiquement + metadata_response = client.get( + f"/image/{image_id}/metadata", + headers={"Authorization": f"Bearer {token}"} + ) + assert metadata_response.status_code == 200 + data = metadata_response.json() + assert "created_at" in data["metadata"] + assert data["metadata"]["created_at"] is not None + +def test_image_with_invalid_pin_id(token): + test_image = create_test_image() + response = client.post( + "/image/pin/123456789987654321abcdef/add", + files={"image": ("test.jpg", test_image, "image/jpeg")}, + data={"exif_date": "2024-03-20T12:00:00", "caption": "Test caption"}, + headers={"Authorization": f"Bearer {token}"} + ) + assert response.status_code == 404 # Le pin n'existe pas + # K.O # # def test_image_too_large(token):