You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

66 lines
2.0 KiB

import pytest
import requests
import os
from pathlib import Path
from PIL import Image
photo_process_host = "http://localhost:85"
parent_path = Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
image_path = os.path.join(str(parent_path) + "/tests/resources/test.jpg")
storage_path = os.path.join(str(parent_path) + "/container-storage")
image_id = "101"
@pytest.fixture
def set_photo():
response = requests.put(
url="{0}/photo/{1}".format(photo_process_host, image_id),
files={"file": ("test.jpg", open(image_path, "rb"), "image/jpeg")},
)
return response
def test_put_photo(set_photo):
assert set_photo.status_code == 200
image_storage_path = Path(os.path.join(storage_path, "{}.jpg".format(image_id)))
assert image_storage_path.exists()
# cleanup
image_storage_path.unlink()
def test_get_photo_and_similar(set_photo):
# get photo resized to 100
response = requests.get(
url="{0}/photo/{1}".format(photo_process_host, image_id), data={"resize": 100}
)
assert response.status_code == 200
temp_image_path = os.path.join(str(parent_path) + "/tests/resources/temp.jpg")
# store the resized photo
with open(temp_image_path, "wb") as f:
f.write(response.content)
im = Image.open(temp_image_path)
assert im.format == "JPEG"
# search for photo similar to resized one
response = requests.put(
url="{0}/photo/similar".format(photo_process_host),
files={"file": ("temp.jpg", open(temp_image_path, "rb"), "image/jpeg")},
)
assert response.status_code == 200
assert response.json() == [int(image_id)]
# cleanup
os.remove(temp_image_path)
def test_delete_image(set_photo):
image_storage_path = Path(os.path.join(storage_path, "{}.jpg".format(image_id)))
assert image_storage_path.exists()
# delete the image
requests.delete(url="{0}/photo/{1}".format(photo_process_host, image_id))
assert image_storage_path.exists() == False