overlay_helpers.py 1.0 KB

123456789101112131415161718192021222324252627282930
  1. """Shared authentication helpers for overlay integration tests."""
  2. from httpx import AsyncClient
  3. async def setup_admin(async_client: AsyncClient, *, suffix: str) -> str:
  4. await async_client.post(
  5. "/api/v1/auth/setup",
  6. json={
  7. "auth_enabled": True,
  8. "admin_username": f"overlayadmin{suffix}",
  9. "admin_password": "AdminPass1!",
  10. },
  11. )
  12. login = await async_client.post(
  13. "/api/v1/auth/login",
  14. json={"username": f"overlayadmin{suffix}", "password": "AdminPass1!"},
  15. )
  16. return login.json()["access_token"]
  17. async def mint_token(async_client: AsyncClient, jwt: str, *, scope: str, name: str = "obs") -> str:
  18. response = await async_client.post(
  19. "/api/v1/auth/tokens",
  20. headers={"Authorization": f"Bearer {jwt}"},
  21. json={"name": name, "expires_in_days": 30, "scope": scope},
  22. )
  23. assert response.status_code == 201, response.text
  24. assert response.json()["scope"] == scope
  25. return response.json()["token"]