test(ariadne): cover provisioning retry helpers
This commit is contained in:
parent
01ccdd3fcb
commit
40c1a3652b
@ -113,10 +113,7 @@ class _ProvisioningTaskMixin:
|
||||
detail_lower = detail.lower()
|
||||
match = re.match(r"^http\s+(\d{3})", detail_lower)
|
||||
if match:
|
||||
try:
|
||||
code = int(match.group(1))
|
||||
except ValueError:
|
||||
code = 0
|
||||
code = int(match.group(1))
|
||||
if code in _RETRYABLE_HTTP_CODES:
|
||||
return True
|
||||
return any(token in detail_lower for token in _RETRYABLE_TOKENS)
|
||||
|
||||
@ -138,12 +138,35 @@ def test_provisioning_task_helpers() -> None:
|
||||
|
||||
def test_provisioning_retryable_detail_detection() -> None:
|
||||
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("http 503: service unavailable") is True
|
||||
assert manager._is_retryable_detail("mailbox not ready") is True
|
||||
assert manager._is_retryable_detail("invalid credentials") is False
|
||||
assert manager._retryable_detail("") == "retryable: temporary failure"
|
||||
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:
|
||||
manager = prov.ProvisioningManager(DummyDB({}), DummyStorage())
|
||||
manager._ensure_task_rows(DummyConn({}, locked=True), "REQ", [])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user