Refactor enrollment validation error to break circular import

This commit is contained in:
2025-10-22 18:01:32 -06:00
parent 438c7e1ed9
commit 1cde8e57de
6 changed files with 26 additions and 31 deletions

View File

@@ -15,6 +15,7 @@ __all__ = [
"EnrollmentApprovalStatus",
"EnrollmentApproval",
"EnrollmentRequest",
"EnrollmentValidationError",
"ProofChallenge",
]
@@ -41,6 +42,24 @@ def _require(value: Optional[str], field: str) -> str:
return text
@dataclass(frozen=True, slots=True)
class EnrollmentValidationError(Exception):
"""Raised when enrollment input fails validation."""
code: str
http_status: int = 400
retry_after: Optional[float] = None
def to_response(self) -> dict[str, object]:
payload: dict[str, object] = {"error": self.code}
if self.retry_after is not None:
payload["retry_after"] = self.retry_after
return payload
def __str__(self) -> str: # pragma: no cover - debug helper
return f"{self.code} (status={self.http_status})"
@dataclass(frozen=True, slots=True)
class EnrollmentCode:
"""Installer code metadata loaded from the persistence layer."""