Route GET / to a landing page with the Porchlight logo, tagline, and card-style navigation links to My Account and Administration.
59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
from httpx import AsyncClient
|
|
|
|
|
|
async def test_health_endpoint(client: AsyncClient) -> None:
|
|
response = await client.get("/health")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["status"] == "ok"
|
|
|
|
|
|
async def test_app_has_title(client: AsyncClient) -> None:
|
|
response = await client.get("/openapi.json")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["info"]["title"] == "Porchlight"
|
|
|
|
|
|
async def test_app_has_repos_on_state(client: AsyncClient) -> None:
|
|
from porchlight.store.protocols import (
|
|
CredentialRepository,
|
|
MagicLinkRepository,
|
|
UserRepository,
|
|
)
|
|
|
|
app = client._transport.app # type: ignore[union-attr]
|
|
assert isinstance(app.state.user_repo, UserRepository)
|
|
assert isinstance(app.state.credential_repo, CredentialRepository)
|
|
assert isinstance(app.state.magic_link_repo, MagicLinkRepository)
|
|
|
|
|
|
async def test_landing_page(client: AsyncClient) -> None:
|
|
response = await client.get("/")
|
|
assert response.status_code == 200
|
|
assert "text/html" in response.headers["content-type"]
|
|
body = response.text
|
|
assert "<h1>Porchlight</h1>" in body
|
|
assert "/manage/profile" in body
|
|
assert "/admin/users" in body
|
|
assert "My Account" in body
|
|
assert "Administration" in body
|
|
|
|
|
|
async def test_dependency_functions() -> None:
|
|
from unittest.mock import MagicMock
|
|
|
|
from porchlight.dependencies import (
|
|
get_credential_repo,
|
|
get_magic_link_repo,
|
|
get_user_repo,
|
|
)
|
|
|
|
request = MagicMock()
|
|
request.app.state.user_repo = "user_repo_sentinel"
|
|
request.app.state.credential_repo = "credential_repo_sentinel"
|
|
request.app.state.magic_link_repo = "magic_link_repo_sentinel"
|
|
|
|
assert get_user_repo(request) == "user_repo_sentinel"
|
|
assert get_credential_repo(request) == "credential_repo_sentinel"
|
|
assert get_magic_link_repo(request) == "magic_link_repo_sentinel"
|