diff --git a/mealie/routes/users/crud.py b/mealie/routes/users/crud.py index bd8101de59e7..3398545d81b2 100644 --- a/mealie/routes/users/crud.py +++ b/mealie/routes/users/crud.py @@ -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}") diff --git a/tests/conftest.py b/tests/conftest.py index f12b327f674f..02d66d50667d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -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") diff --git a/tests/data/test_image.jpg b/tests/data/images/test_image.jpg similarity index 100% rename from tests/data/test_image.jpg rename to tests/data/images/test_image.jpg diff --git a/tests/data/images/test_image.png b/tests/data/images/test_image.png new file mode 100644 index 000000000000..1f89847e5a25 Binary files /dev/null and b/tests/data/images/test_image.png differ diff --git a/tests/integration_tests/test_user_routes.py b/tests/integration_tests/test_user_routes.py index fe234ef33e85..aebd4233226e 100644 --- a/tests/integration_tests/test_user_routes.py +++ b/tests/integration_tests/test_user_routes.py @@ -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()])