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