eggacheb's picture
Upload 97 files
21db53c verified
import asyncio
import importlib
from pathlib import Path
import pytest
from fastapi.testclient import TestClient
from app import config
TEST_ACCESS_TOKEN = 'test_token'
TEST_ADMIN_TOKEN = 'test_admin_token'
@pytest.fixture(scope="session")
def unauthorized_test_client(tmp_path_factory) -> TestClient:
# Modify the configuration for testing
config.config.qdrant.mode = "memory"
config.config.admin_api_enable = True
config.config.access_protected = True
config.config.access_token = TEST_ACCESS_TOKEN
config.config.admin_token = TEST_ADMIN_TOKEN
config.config.storage.method = config.StorageMode.LOCAL
config.config.storage.local.path = tmp_path_factory.mktemp("static_files")
# Start the application
with TestClient(importlib.import_module('app.webapp').app) as client:
yield client
@pytest.fixture(scope="module")
def test_client(unauthorized_test_client):
unauthorized_test_client.headers = {'x-access-token': TEST_ACCESS_TOKEN, 'x-admin-token': TEST_ADMIN_TOKEN}
yield unauthorized_test_client
unauthorized_test_client.headers = {}
def check_local_dir_empty():
dir = Path(config.config.storage.local.path)
files = [f for f in dir.glob('*.*') if f.is_file()]
assert len(files) == 0
thumbnail_dir = dir / 'thumbnails'
if thumbnail_dir.exists():
thumbnail_files = [f for f in thumbnail_dir.glob('*.*') if f.is_file()]
assert len(thumbnail_files) == 0
@pytest.fixture()
def ensure_local_dir_empty():
yield
check_local_dir_empty()
@pytest.fixture(scope="module")
def wait_for_background_task(test_client):
async def func(expected_image_count):
while True:
resp = test_client.get('/admin/server_info')
if resp.json()['image_count'] >= expected_image_count:
break
await asyncio.sleep(0.2)
assert resp.json()['index_queue_length'] == 0
return func
@pytest.fixture
def anyio_backend():
return 'asyncio'