From b9ac9583fcf3fabe6bffd00d2da75260524c51da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AF=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2=20=20=D0=9F?= =?UTF-8?q?=D0=BE=D0=BB=D1=96=D0=BD=D0=BA=D1=96=D0=BD?= Date: Mon, 3 Feb 2025 18:02:12 +0200 Subject: [PATCH 1/2] creating tests for your accounts --- src/tests/test_accounts.py | 74 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/tests/test_accounts.py diff --git a/src/tests/test_accounts.py b/src/tests/test_accounts.py new file mode 100644 index 0000000..d1f91c3 --- /dev/null +++ b/src/tests/test_accounts.py @@ -0,0 +1,74 @@ +import pytest +from fastapi.testclient import TestClient +from sqlalchemy.orm import Session +from main import app +from ..database.session_postgresql import get_postgresql_db +from unittest.mock import MagicMock + +client = TestClient(app) + + +@pytest.fixture +def db_session(): + mock_db = MagicMock(spec=Session) + yield mock_db + + +@pytest.fixture +def override_get_db(db_session): + app.dependency_overrides[get_postgresql_db] = lambda: db_session + yield + app.dependency_overrides.clear() + + +def test_register_user(override_get_db): + response = client.post( + "/register/", + json={"email": "test@example.com", "password": "password123"} + ) + assert response.status_code == 201 + assert "email" in response.json() + + +def test_register_existing_user(override_get_db): + client.post("/register/", json={"email": "test@example.com", "password": "password123"}) + response = client.post("/register/", json={"email": "test@example.com", "password": "password123"}) + assert response.status_code == 409 + assert response.json()["detail"].startswith("A user with this email") + + +def test_activate_account(override_get_db): + response = client.post( + "/activate/", + json={"email": "test@example.com", "token": "valid_token"} + ) + assert response.status_code == 200 + assert response.json()["message"] == "User account activated successfully." + + +def test_login_user(override_get_db): + response = client.post( + "/login/", + json={"email": "test@example.com", "password": "password123"} + ) + assert response.status_code == 201 + assert "access_token" in response.json() + assert "refresh_token" in response.json() + + +def test_request_password_reset(override_get_db): + response = client.post( + "/password-reset/request/", + json={"email": "test@example.com"} + ) + assert response.status_code == 200 + assert "message" in response.json() + + +def test_refresh_access_token(override_get_db): + response = client.post( + "/refresh/", + json={"refresh_token": "valid_refresh_token"} + ) + assert response.status_code == 200 + assert "access_token" in response.json() From 4b51d274219764b2af6d8e9c51e88c418f672633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AF=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2=20=20=D0=9F?= =?UTF-8?q?=D0=BE=D0=BB=D1=96=D0=BD=D0=BA=D1=96=D0=BD?= Date: Tue, 4 Feb 2025 00:59:29 +0200 Subject: [PATCH 2/2] creating tests for movies --- src/tests/test_movies.py | 90 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/tests/test_movies.py diff --git a/src/tests/test_movies.py b/src/tests/test_movies.py new file mode 100644 index 0000000..6a3e188 --- /dev/null +++ b/src/tests/test_movies.py @@ -0,0 +1,90 @@ +import pytest +from httpx import AsyncClient +from main import app + + +@pytest.fixture +async def client(): + async with AsyncClient(app=app, base_url="http://test") as ac: + yield ac + + +@pytest.mark.asyncio +async def test_get_movies(client): + response = await client.get("/movies/") + assert response.status_code == 200 + assert isinstance(response.json(), list) + + +@pytest.mark.asyncio +async def test_create_movie(client): + movie_data = { + "title": "Test Movie", + "description": "Test Description", + "release_year": 2024, + "rating": 8.5, + "genre_ids": [], + "actor_ids": [] + } + response = await client.post("/movies/", json=movie_data) + assert response.status_code == 201 + data = response.json() + assert data["title"] == movie_data["title"] + assert "id" in data + + +@pytest.mark.asyncio +async def test_get_movie_by_id(client): + movie_data = { + "title": "Sample Movie", + "description": "Sample Description", + "release_year": 2024, + "rating": 7.8, + "genre_ids": [], + "actor_ids": [] + } + create_response = await client.post("/movies/", json=movie_data) + movie_id = create_response.json()["id"] + + response = await client.get(f"/movies/{movie_id}") + assert response.status_code == 200 + assert response.json()["id"] == movie_id + + +@pytest.mark.asyncio +async def test_update_movie(client): + movie_data = { + "title": "Old Title", + "description": "Old Description", + "release_year": 2020, + "rating": 6.0, + "genre_ids": [], + "actor_ids": [] + } + create_response = await client.post("/movies/", json=movie_data) + movie_id = create_response.json()["id"] + + update_data = {"title": "New Title"} + response = await client.patch(f"/movies/{movie_id}", json=update_data) + assert response.status_code == 200 + assert response.json()["title"] == "New Title" + + +@pytest.mark.asyncio +async def test_delete_movie(client): + movie_data = { + "title": "To Be Deleted", + "description": "Will be removed", + "release_year": 2021, + "rating": 5.5, + "genre_ids": [], + "actor_ids": [] + } + create_response = await client.post("/movies/", json=movie_data) + movie_id = create_response.json()["id"] + + delete_response = await client.delete(f"/movies/{movie_id}") + assert delete_response.status_code == 204 + + response = await client.get(f"/movies/{movie_id}") + assert response.status_code == 404