Remove former profile image upon new upload (#381)

* Remove former profile image upon new upload

* Fix test
This commit is contained in:
sephrat 2021-05-01 23:35:46 +02:00 committed by GitHub
parent fad2f8da59
commit 52e5e9da5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 6 deletions

View File

@ -105,10 +105,7 @@ async def update_user_image(
app_dirs.USER_DIR.joinpath(id).mkdir(parents=True, exist_ok=True)
try:
[x.unlink() for x in app_dirs.USER_DIR.join(id).glob("profile_image.*")]
except Exception:
pass
[x.unlink() for x in app_dirs.USER_DIR.joinpath(id).glob("profile_image.*")]
dest = app_dirs.USER_DIR.joinpath(id, f"profile_image.{extension}")

View File

@ -47,8 +47,13 @@ def api_routes():
@fixture(scope="session")
def test_image():
return TEST_DATA.joinpath("test_image.jpg")
def test_image_jpg():
return TEST_DATA.joinpath("images", "test_image.jpg")
@fixture(scope="session")
def test_image_png():
return TEST_DATA.joinpath("images", "test_image.png")
@fixture(scope="session")

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,6 +1,8 @@
import json
from pathlib import Path
from fastapi.testclient import TestClient
from mealie.core.config import app_dirs
from mealie.schema.user import UserOut
from pytest import fixture
from tests.app_routes import AppRoutes
@ -84,3 +86,25 @@ def test_delete_user(api_client: TestClient, api_routes: AppRoutes, token):
response = api_client.delete(api_routes.users_id(2), headers=token)
assert response.status_code == 200
def test_update_user_image(
api_client: TestClient, api_routes: AppRoutes, test_image_jpg: Path, test_image_png: Path, token
):
response = api_client.post(
api_routes.users_id_image(2), files={"profile_image": test_image_jpg.open("rb")}, headers=token
)
assert response.status_code == 200
response = api_client.post(
api_routes.users_id_image(2), files={"profile_image": test_image_png.open("rb")}, headers=token
)
assert response.status_code == 200
directory = app_dirs.USER_DIR.joinpath("2")
assert directory.joinpath("profile_image.png").is_file()
# Old profile images are removed
assert 1 == len([file for file in directory.glob("profile_image.*") if file.is_file()])