fix: prevent secondary OTP from hanging

This commit is contained in:
Mison
2026-03-24 09:15:02 +08:00
parent 78f2d0accc
commit 3c8ba40d2d
4 changed files with 62 additions and 15 deletions

View File

@@ -23,7 +23,7 @@ class FakeHTTPClient:
return self.responses.pop(0)
def test_get_verification_code_ignores_messages_not_newer_than_otp_anchor(monkeypatch):
def test_get_verification_code_ignores_messages_older_than_tolerance_window(monkeypatch):
service = TempmailService({
"base_url": "https://api.tempmail.test/v2",
"timeout": 1,
@@ -43,7 +43,7 @@ def test_get_verification_code_ignores_messages_not_newer_than_otp_anchor(monkey
"from": "noreply@openai.com",
"subject": "Old verification code",
"body": "111111",
"received_at": 1999,
"received_at": 1998,
},
{
"id": "new-mail",
@@ -74,3 +74,47 @@ def test_get_verification_code_ignores_messages_not_newer_than_otp_anchor(monkey
},
}
]
def test_get_verification_code_allows_two_second_anchor_tolerance(monkeypatch):
service = TempmailService({
"base_url": "https://api.tempmail.test/v2",
"timeout": 1,
"max_retries": 1,
})
service._email_cache["tester@example.com"] = {
"email": "tester@example.com",
"token": "token-1",
}
service.http_client = FakeHTTPClient([
FakeResponse(
status_code=200,
payload={
"emails": [
{
"id": "too-old-mail",
"from": "noreply@openai.com",
"subject": "Too old verification code",
"body": "111111",
"received_at": 1998,
},
{
"id": "tolerated-mail",
"from": "noreply@openai.com",
"subject": "Tolerated verification code",
"body": "654321",
"received_at": 1999,
},
]
},
)
])
monkeypatch.setattr(tempmail_module.time, "sleep", lambda _: None)
code = service.get_verification_code(
email="tester@example.com",
timeout=1,
otp_sent_at=2000,
)
assert code == "654321"