mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-07 19:18:34 +03:00
* Update pyproject.toml * add pre-commit * Create .pre-commit-config.yaml * Comment out ruff * Update .pre-commit-config.yaml * General formatting * Create format-and-fail.yml * Update ci.yml * Add pre-commit to dev dependencies * Update pyproject.toml
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import os
|
|
import shutil
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
|
|
|
|
def test_lifespan(app):
|
|
with TestClient(app) as client:
|
|
r = client.get("/health")
|
|
assert r.status_code == 200
|
|
assert r.json() == {"status": "ok"}
|
|
|
|
def test_alembic(db_session):
|
|
import alembic.config
|
|
alembic.config.main(argv=['--raiseerr', 'upgrade', 'head'])
|
|
alembic.config.main(argv=['--raiseerr', 'downgrade', 'base'])
|
|
|
|
@patch("app.web.endpoints.url.crud.soft_delete_archive", side_effect=Exception('mocked error'))
|
|
def test_logging_middleware(m1, client_with_auth):
|
|
from app.web.utils.metrics import EXCEPTION_COUNTER
|
|
assert len(EXCEPTION_COUNTER.collect()[0].samples) == 0
|
|
with pytest.raises(Exception, match="mocked error"):
|
|
client_with_auth.delete("/url/123")
|
|
# creates one empty and one from above
|
|
assert len(EXCEPTION_COUNTER.collect()[0].samples) == 2
|
|
|
|
|
|
def test_serve_local_archive_logic(get_settings):
|
|
# create a test file first
|
|
os.makedirs("local_archive_test", exist_ok=True)
|
|
with open("local_archive_test/temp.txt", "w") as f:
|
|
f.write("test")
|
|
|
|
try:
|
|
# modify the settings
|
|
get_settings.SERVE_LOCAL_ARCHIVE = "/app/local_archive_test"
|
|
from app.web.main import app_factory
|
|
app = app_factory(get_settings)
|
|
|
|
# test
|
|
client = TestClient(app)
|
|
r = client.get("/app/local_archive_test/temp.txt")
|
|
assert r.status_code == 200
|
|
assert r.text == "test"
|
|
finally:
|
|
# cleanup
|
|
shutil.rmtree("local_archive_test")
|