feat: add SoundRepository and SoundScannerService for audio file management
- Implemented SoundRepository for database operations related to sounds, including methods for retrieving, creating, updating, and deleting sound records. - Developed SoundScannerService to scan directories for audio files, calculate their metadata, and synchronize with the database. - Added support for various audio file formats and integrated ffmpeg for audio duration extraction. - Created comprehensive tests for sound API endpoints and sound scanner service to ensure functionality and error handling. - Updated dependencies to include ffmpeg-python for audio processing.
This commit is contained in:
@@ -114,6 +114,19 @@ async def authenticated_client(
|
||||
yield client
|
||||
|
||||
|
||||
@pytest_asyncio.fixture
|
||||
async def authenticated_admin_client(
|
||||
test_app: FastAPI, admin_cookies: dict[str, str],
|
||||
) -> AsyncGenerator[AsyncClient, None]:
|
||||
"""Create a test HTTP client with admin authentication cookies."""
|
||||
async with AsyncClient(
|
||||
transport=ASGITransport(app=test_app),
|
||||
base_url="http://test",
|
||||
cookies=admin_cookies,
|
||||
) as client:
|
||||
yield client
|
||||
|
||||
|
||||
@pytest_asyncio.fixture
|
||||
async def test_plan(test_session: AsyncSession) -> Plan:
|
||||
"""Create a test plan."""
|
||||
@@ -307,3 +320,17 @@ async def auth_cookies(test_user: User) -> dict[str, str]:
|
||||
access_token = JWTUtils.create_access_token(token_data)
|
||||
|
||||
return {"access_token": access_token}
|
||||
|
||||
|
||||
@pytest_asyncio.fixture
|
||||
async def admin_cookies(admin_user: User) -> dict[str, str]:
|
||||
"""Create admin authentication cookies with JWT token."""
|
||||
token_data = {
|
||||
"sub": str(admin_user.id),
|
||||
"email": admin_user.email,
|
||||
"role": admin_user.role,
|
||||
}
|
||||
|
||||
access_token = JWTUtils.create_access_token(token_data)
|
||||
|
||||
return {"access_token": access_token}
|
||||
|
||||
Reference in New Issue
Block a user