import pytest from httpx import AsyncClient from pathlib import Path async def test_get_libraries_without_auth(client: AsyncClient) -> None: response = await client.get("/libraries?library_id=1") assert response.status_code == 401 async def test_get_libraries_with_auth(authenticated_client: AsyncClient) -> None: response = await authenticated_client.get("/libraries?library_id=1") assert response.status_code == 200 @pytest.mark.parametrize( ("name", "read_only", "expected_status_code"), [("Test Library", False, 201), ("Read-Only Library", True, 400)], ) async def test_create_library( authenticated_client: AsyncClient, tmp_path: Path, name: str, read_only: bool, expected_status_code: int, ) -> None: library_data = { "name": "Test Library", "root_path": f"{tmp_path}/books", "path_template": "{author}/{title}", "read_only": read_only, } response = await authenticated_client.post("/libraries", json=library_data) assert response.status_code == expected_status_code if response.status_code == 201: result = response.json() assert result["name"] == "Test Library" assert result["root_path"] == f"{tmp_path}/books" assert result["path_template"] == "{author}/{title}" assert result["read_only"] == False assert result["description"] is None