WIP fixing tests

This commit is contained in:
msramalho
2025-02-10 23:49:18 +00:00
parent 37ebba73bf
commit 1877999a70
7 changed files with 43 additions and 42 deletions

View File

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

View File

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

View File

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

View File

@@ -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):

View File

@@ -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")

View File

@@ -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")

View File

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