diff --git a/app/tests/conftest.py b/app/tests/conftest.py index dbf1ec5..7505c07 100644 --- a/app/tests/conftest.py +++ b/app/tests/conftest.py @@ -3,8 +3,8 @@ from fastapi.testclient import TestClient import pytest from unittest.mock import patch from app.shared.config import ALLOW_ANY_EMAIL -from db.user_state import UserState -from shared.settings import Settings +from app.shared.db.user_state import UserState +from app.shared.settings import Settings @pytest.fixture(autouse=True) @@ -27,9 +27,9 @@ def mock_settings(): @pytest.fixture() def test_db(get_settings: Settings): - from db.database import make_engine - from db import models - from db.crud import get_user_groups + from app.shared.db import models + from app.shared.db.database import make_engine + from app.shared.db.crud import get_user_groups get_user_groups.cache_clear() make_engine.cache_clear() @@ -54,7 +54,7 @@ def test_db(get_settings: Settings): @pytest.fixture() def db_session(test_db): - from db.database import make_session_local + from app.shared.db.database import make_session_local session_local = make_session_local(test_db) with session_local() as session: yield session @@ -63,7 +63,7 @@ def db_session(test_db): @pytest.fixture() def app(db_session): from web.main import app_factory - from db import crud + from app.shared.db import crud app = app_factory() crud.upsert_user_groups(db_session) return app diff --git a/app/tests/db/test_crud.py b/app/tests/db/test_crud.py index bbc8bdd..a7317b3 100644 --- a/app/tests/db/test_crud.py +++ b/app/tests/db/test_crud.py @@ -3,7 +3,7 @@ from unittest.mock import patch import pytest import yaml -from db import models +from app.shared.db import models from shared.settings import Settings authors = ["rick@example.com", "morty@example.com", "jerry@example.com"] @@ -55,14 +55,14 @@ def test_data(db_session): # setup groups assert db_session.query(models.Group).count() == 0 - from db import crud + from app.shared.db import crud crud.upsert_user_groups(db_session) assert db_session.query(models.Group).count() == 4 assert db_session.query(models.User).count() == 3 def test_get_archive(test_data, db_session): - from db import crud + from app.shared.db import crud from app.shared.config import ALLOW_ANY_EMAIL print(db_session.query(models.Group).all()) @@ -93,7 +93,7 @@ def test_get_archive(test_data, db_session): def test_search_archives_by_url(test_data, db_session): - from db import crud + from app.shared.db import crud from app.shared.config import ALLOW_ANY_EMAIL # rick's archives are private @@ -141,7 +141,7 @@ def test_search_archives_by_url(test_data, db_session): def test_search_archives_by_email(test_data, db_session): from app.shared.config import ALLOW_ANY_EMAIL - from db import crud + from app.shared.db import crud # lower/upper case assert len(crud.search_archives_by_email(db_session, "rick@example.com")) == 34 @@ -162,7 +162,7 @@ def test_search_archives_by_email(test_data, db_session): @patch("db.crud.DATABASE_QUERY_LIMIT", new=25) def test_max_query_limit(test_data, db_session): - from db import crud + from app.shared.db import crud from app.shared.config import ALLOW_ANY_EMAIL assert len(crud.search_archives_by_url(db_session, "https://example", ALLOW_ANY_EMAIL)) == 25 @@ -173,8 +173,8 @@ def test_max_query_limit(test_data, db_session): def test_create_task(db_session): - from db import crud - from db import schemas + from app.shared.db import crud + from app.shared import schemas task = schemas.ArchiveCreate( id="archive-id-456-101", @@ -218,7 +218,7 @@ def test_create_task(db_session): def test_soft_delete(test_data, db_session): - from db import crud + from app.shared.db import crud # none deleted yet assert crud.get_archive(db_session, "archive-id-456-0", "rick@example.com") is not None @@ -236,7 +236,7 @@ def test_soft_delete(test_data, db_session): def test_count_archives(test_data, db_session): - from db import crud + from app.shared.db import crud assert crud.count_archives(db_session) == 100 db_session.query(models.Archive).filter(models.Archive.id == "archive-id-456-0").delete() @@ -245,7 +245,7 @@ def test_count_archives(test_data, db_session): def test_count_archive_urls(test_data, db_session): - from db import crud + from app.shared.db import crud assert crud.count_archive_urls(db_session) == 1000 db_session.query(models.ArchiveUrl).filter(models.ArchiveUrl.url == "https://example-0.com/0").delete() @@ -260,7 +260,7 @@ def test_count_archive_urls(test_data, db_session): def test_count_users(test_data, db_session): - from db import crud + from app.shared.db import crud assert crud.count_users(db_session) == 3 db_session.query(models.User).filter(models.User.email == "rick@example.com").delete() @@ -269,7 +269,7 @@ def test_count_users(test_data, db_session): def test_count_by_users_since(test_data, db_session): - from db import crud + from app.shared.db import crud # 100y window assert len(cu := crud.count_by_user_since(db_session, 60 * 60 * 24 * 31 * 12 * 100)) == 3 @@ -279,7 +279,7 @@ def test_count_by_users_since(test_data, db_session): def test_create_tag(db_session): - from db import crud + from app.shared.db import crud assert db_session.query(models.Tag).count() == 0 @@ -303,7 +303,7 @@ def test_create_tag(db_session): def test_is_user_in_group(test_data, db_session): - from db import crud + from app.shared.db import crud from app.shared.config import ALLOW_ANY_EMAIL # see user-groups.test.yaml @@ -343,7 +343,7 @@ def test_is_user_in_group(test_data, db_session): def test_get_group(test_data, db_session): - from db import crud + from app.shared.db import crud assert crud.get_group(db_session, "spaceship") is not None assert crud.get_group(db_session, "interdimensional") is not None @@ -352,7 +352,7 @@ def test_get_group(test_data, db_session): def test_create_or_get_user(test_data, db_session): - from db import crud + from app.shared.db import crud assert db_session.query(models.User).count() == 3 @@ -368,7 +368,7 @@ def test_create_or_get_user(test_data, db_session): def test_upsert_group(test_data, db_session): - from db import crud + from app.shared.db import crud assert db_session.query(models.Group).count() == 4 @@ -397,7 +397,7 @@ def test_upsert_group(test_data, db_session): def test_upsert_user_groups(db_session): - from db import crud + from app.shared.db import crud @patch('db.crud.get_settings', new=lambda: bad_setings) def test_missing_yaml(db_session): @@ -419,7 +419,7 @@ def test_upsert_user_groups(db_session): def test_create_sheet(db_session): - from db import crud + from app.shared.db import crud assert db_session.query(models.Sheet).count() == 0 @@ -440,7 +440,7 @@ def test_create_sheet(db_session): def test_get_user_sheet(test_data, db_session): - from db import crud + from app.shared.db import crud assert crud.get_user_sheet(db_session, "", "sheet-0") is None assert crud.get_user_sheet(db_session, "morty@example.com", "sheet-0") is None @@ -451,7 +451,7 @@ def test_get_user_sheet(test_data, db_session): def test_get_user_sheets(test_data, db_session): - from db import crud + from app.shared.db import crud assert len(crud.get_user_sheets(db_session, "")) == 0 rick_sheets = crud.get_user_sheets(db_session, "rick@example.com") @@ -460,7 +460,7 @@ def test_get_user_sheets(test_data, db_session): assert len(crud.get_user_sheets(db_session, "morty@example.com")) == 1 def test_delete_sheet(test_data, db_session): - from db import crud + from app.shared.db import crud assert crud.delete_sheet(db_session, "sheet-0", "") == False assert crud.delete_sheet(db_session, "sheet-0", "rick@example.com") == True diff --git a/app/tests/db/test_models.py b/app/tests/db/test_models.py index d5ced1e..35ba368 100644 --- a/app/tests/db/test_models.py +++ b/app/tests/db/test_models.py @@ -1,5 +1,5 @@ def test_generate_uuid(): - from db.models import generate_uuid + from app.shared.db.models import generate_uuid assert generate_uuid() != generate_uuid() assert len(generate_uuid()) == 36 diff --git a/app/tests/endpoints/test_interoperability.py b/app/tests/endpoints/test_interoperability.py index 2dac484..0d35ca2 100644 --- a/app/tests/endpoints/test_interoperability.py +++ b/app/tests/endpoints/test_interoperability.py @@ -3,7 +3,7 @@ import json from unittest.mock import patch from app.shared.config import ALLOW_ANY_EMAIL -from db import crud +from app.shared.db import crud def test_submit_manual_archive_unauthenticated(client, test_no_auth): diff --git a/app/tests/endpoints/test_sheet.py b/app/tests/endpoints/test_sheet.py index d9c2f31..a39e0c8 100644 --- a/app/tests/endpoints/test_sheet.py +++ b/app/tests/endpoints/test_sheet.py @@ -46,7 +46,7 @@ def test_create_sheet_endpoint(app_with_auth, db_session): # switch to jerry who's got less quota/permissions from web.security import get_user_state - from db.user_state import UserState + from app.shared.db.user_state import UserState app_with_auth.dependency_overrides[get_user_state] = lambda: UserState(db_session, "jerry@example.com") client_jerry = TestClient(app_with_auth) @@ -76,7 +76,7 @@ def test_get_user_sheets_endpoint(client_with_auth, db_session): assert response.json() == [] # with data - from db import models + from app.shared.db import models db_session.add( models.Sheet(id="123", name="Test Sheet 1", author_id="morty@example.com", group_id="spaceship", frequency="hourly") ) @@ -122,7 +122,7 @@ def test_delete_sheet_endpoint(client_with_auth, db_session): } # add sheets for deletion - from db import models + from app.shared.db import models db_session.add_all([ models.Sheet(id="123-sheet-id", name="Test Sheet 1", author_id="morty@example.com", group_id="interdimensional", frequency="daily"), models.Sheet(id="456-sheet-id", name="Test Sheet 2", author_id="rick@example.com", group_id="spaceship", frequency="hourly"), @@ -146,7 +146,7 @@ def test_delete_sheet_endpoint(client_with_auth, db_session): class TestArchiveUserSheetEndpoint: @patch("endpoints.sheet.celery", return_value=MagicMock()) def test_normal_flow(self, m_celery, client_with_auth, db_session): - from db import models + from app.shared.db import models db_session.add(models.Sheet(id="123-sheet-id", name="Test Sheet 1", author_id="morty@example.com", group_id="spaceship", frequency="hourly")) db_session.commit() @@ -169,7 +169,7 @@ class TestArchiveUserSheetEndpoint: assert r.json() == {"detail": "No access to this sheet."} def test_no_access(self, client_with_auth, db_session): - from db import models + from app.shared.db import models db_session.add(models.Sheet(id="123-sheet-id", name="Test Sheet 1", author_id="rick@example.com", group_id="spaceship", frequency="hourly")) db_session.commit() r = client_with_auth.post("/sheet/123-sheet-id/archive") @@ -177,7 +177,7 @@ class TestArchiveUserSheetEndpoint: assert r.json() == {"detail": "No access to this sheet."} def test_user_not_in_group(self, client_with_auth, db_session): - from db import models + from app.shared.db import models db_session.add(models.Sheet(id="123-sheet-id", name="Test Sheet 1", author_id="morty@example.com", group_id="interdimensional", frequency="hourly")) db_session.commit() r = client_with_auth.post("/sheet/123-sheet-id/archive") @@ -185,7 +185,7 @@ class TestArchiveUserSheetEndpoint: assert r.json() == {"detail": "User does not have access to this group."} def test_user_cannot_manually_trigger(self, client_with_auth, db_session): - from db import models + from app.shared.db import models db_session.add(models.Sheet(id="123-sheet-id", name="Test Sheet 1", author_id="morty@example.com", group_id="default", frequency="hourly")) db_session.commit() r = client_with_auth.post("/sheet/123-sheet-id/archive") diff --git a/app/tests/endpoints/test_url.py b/app/tests/endpoints/test_url.py index c5d2fcc..d6f43f0 100644 --- a/app/tests/endpoints/test_url.py +++ b/app/tests/endpoints/test_url.py @@ -130,7 +130,7 @@ def test_search_by_url(client_with_auth, client_with_token, db_session): assert response.status_code == 200 assert response.json() == [] - from db import crud, schemas + from app.shared.db import crud, schemas for i in range(11): crud.create_task(db_session, ArchiveCreate(id=f"url-456-{i}", url="https://example.com" if i < 10 else "https://something-else.com", result={}, public=True, author_id="rick@example.com"), [], []) # NB: this insertion is too fast for the ordering to be correct as they are within the same second @@ -184,7 +184,7 @@ def test_delete_task(client_with_auth, db_session): assert response.status_code == 200 assert response.json() == {"id": "delete-123-456-789", "deleted": False} - from db import crud + from app.shared.db import crud crud.create_task(db_session, ArchiveCreate(id="delete-123-456-789", url="https://example.com", result={}, public=True, author_id="morty@example.com"), [], []) response = client_with_auth.delete("/url/delete-123-456-789") diff --git a/app/tests/worker/test_worker_main.py b/app/tests/worker/test_worker_main.py index edebd5f..a0fb9ed 100644 --- a/app/tests/worker/test_worker_main.py +++ b/app/tests/worker/test_worker_main.py @@ -5,7 +5,8 @@ from unittest.mock import MagicMock, patch import pytest -from db import models, schemas +from app.shared.db import models +from app.shared import schemas from auto_archiver import Metadata from auto_archiver.core import Media