- Use Annotated[str, Form()] for FastAPI dependencies (FAST002) - Add missing type annotations across src/ and tests/ (ANN001/003/201/202) - Reduce function arguments via request.form() reads (PLR0913) - Combine return paths to reduce return statements (PLR0911) - Use anyio.Path for async-safe filesystem operations (ASYNC240) - Extract constants, helpers, and dict comprehensions for clarity - Move inline imports to top-level (PLC0415) - Use raw strings for regex match patterns (RUF043) - Fix redundant get_session_user call in delete_user (not-iterable) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
55 lines
2 KiB
Python
55 lines
2 KiB
Python
import shutil
|
|
from pathlib import Path
|
|
|
|
from porchlight.config import Settings
|
|
from porchlight.oidc.claims import PorchlightUserInfo
|
|
from porchlight.oidc.provider import create_oidc_server
|
|
|
|
|
|
def test_create_server_has_endpoints() -> None:
|
|
key_path = Path("test_keys_provider")
|
|
key_path.mkdir(exist_ok=True)
|
|
try:
|
|
settings = Settings(issuer="http://localhost:8000", sqlite_path=":memory:", signing_key_path=str(key_path))
|
|
server = create_oidc_server(settings)
|
|
assert "authorization" in server.endpoint
|
|
assert "token" in server.endpoint
|
|
assert "userinfo" in server.endpoint
|
|
assert "provider_config" in server.endpoint
|
|
finally:
|
|
shutil.rmtree(key_path, ignore_errors=True)
|
|
|
|
|
|
def test_create_server_has_issuer() -> None:
|
|
key_path = Path("test_keys_issuer")
|
|
key_path.mkdir(exist_ok=True)
|
|
try:
|
|
settings = Settings(issuer="http://localhost:8000", sqlite_path=":memory:", signing_key_path=str(key_path))
|
|
server = create_oidc_server(settings)
|
|
assert server.context.issuer == "http://localhost:8000"
|
|
finally:
|
|
shutil.rmtree(key_path, ignore_errors=True)
|
|
|
|
|
|
def test_create_server_jwks_available() -> None:
|
|
key_path = Path("test_keys_jwks")
|
|
key_path.mkdir(exist_ok=True)
|
|
try:
|
|
settings = Settings(issuer="http://localhost:8000", sqlite_path=":memory:", signing_key_path=str(key_path))
|
|
server = create_oidc_server(settings)
|
|
keys = server.keyjar.export_jwks()
|
|
assert "keys" in keys
|
|
assert len(keys["keys"]) > 0
|
|
finally:
|
|
shutil.rmtree(key_path, ignore_errors=True)
|
|
|
|
|
|
def test_create_server_userinfo_is_porchlight() -> None:
|
|
key_path = Path("test_keys_userinfo")
|
|
key_path.mkdir(exist_ok=True)
|
|
try:
|
|
settings = Settings(issuer="http://localhost:8000", sqlite_path=":memory:", signing_key_path=str(key_path))
|
|
server = create_oidc_server(settings)
|
|
assert isinstance(server.context.userinfo, PorchlightUserInfo)
|
|
finally:
|
|
shutil.rmtree(key_path, ignore_errors=True)
|