test(ariadne): cover provisioning retry helpers

This commit is contained in:
codex 2026-04-21 03:18:08 -03:00
parent 01ccdd3fcb
commit 40c1a3652b
2 changed files with 24 additions and 4 deletions

View File

@ -113,10 +113,7 @@ class _ProvisioningTaskMixin:
detail_lower = detail.lower() detail_lower = detail.lower()
match = re.match(r"^http\s+(\d{3})", detail_lower) match = re.match(r"^http\s+(\d{3})", detail_lower)
if match: if match:
try: code = int(match.group(1))
code = int(match.group(1))
except ValueError:
code = 0
if code in _RETRYABLE_HTTP_CODES: if code in _RETRYABLE_HTTP_CODES:
return True return True
return any(token in detail_lower for token in _RETRYABLE_TOKENS) return any(token in detail_lower for token in _RETRYABLE_TOKENS)

View File

@ -138,12 +138,35 @@ def test_provisioning_task_helpers() -> None:
def test_provisioning_retryable_detail_detection() -> None: def test_provisioning_retryable_detail_detection() -> None:
manager = prov.ProvisioningManager(DummyDB({}, locked=True), DummyStorage()) manager = prov.ProvisioningManager(DummyDB({}, locked=True), DummyStorage())
assert manager._is_retryable_detail("") is False
assert manager._is_retryable_detail("timeout") is True assert manager._is_retryable_detail("timeout") is True
assert manager._is_retryable_detail("http 503: service unavailable") is True assert manager._is_retryable_detail("http 503: service unavailable") is True
assert manager._is_retryable_detail("mailbox not ready") is True assert manager._is_retryable_detail("mailbox not ready") is True
assert manager._is_retryable_detail("invalid credentials") is False assert manager._is_retryable_detail("invalid credentials") is False
assert manager._retryable_detail("") == "retryable: temporary failure"
assert manager._retryable_detail("timeout").startswith("retryable:") assert manager._retryable_detail("timeout").startswith("retryable:")
def test_provisioning_retry_at_parsing_and_due_state() -> None:
manager = prov.ProvisioningManager(DummyDB({}, locked=True), DummyStorage())
assert manager._parse_retry_at("") is None
assert manager._parse_retry_at("not a retry") is None
assert manager._parse_retry_at("rate limited until not-a-date") is None
assert manager._parse_retry_at("rate limited until 2099-01-01T00:00:00+0000").tzinfo is not None
class Conn:
def __init__(self, row):
self.row = row
def execute(self, *_args, **_kwargs):
return types.SimpleNamespace(fetchone=lambda: self.row)
assert manager._vaultwarden_retry_due(Conn({"status": "ok", "detail": ""}), "REQ") is True
assert manager._vaultwarden_retry_due(Conn({"status": "pending", "detail": "not a retry"}), "REQ") is True
future = "rate limited until 2099-01-01T00:00:00Z"
assert manager._vaultwarden_retry_due(Conn({"status": "pending", "detail": future}), "REQ") is False
past = "rate limited until 2000-01-01T00:00:00Z"
assert manager._vaultwarden_retry_due(Conn({"status": "pending", "detail": past}), "REQ") is True
def test_provisioning_ensure_task_rows_empty() -> None: def test_provisioning_ensure_task_rows_empty() -> None:
manager = prov.ProvisioningManager(DummyDB({}), DummyStorage()) manager = prov.ProvisioningManager(DummyDB({}), DummyStorage())
manager._ensure_task_rows(DummyConn({}, locked=True), "REQ", []) manager._ensure_task_rows(DummyConn({}, locked=True), "REQ", [])