mirror of
https://github.com/cnlimiter/codex-register.git
synced 2026-05-06 20:02:51 +08:00
100 lines
2.8 KiB
Python
100 lines
2.8 KiB
Python
from src.services.freemail import FreemailService
|
|
from src.services.temp_mail import TempMailService
|
|
|
|
|
|
class FakeResponse:
|
|
def __init__(self, status_code=200, payload=None, text=""):
|
|
self.status_code = status_code
|
|
self._payload = payload
|
|
self.text = text
|
|
self.headers = {}
|
|
|
|
def json(self):
|
|
if self._payload is None:
|
|
raise ValueError("no json payload")
|
|
return self._payload
|
|
|
|
|
|
class FakeHTTPClient:
|
|
def __init__(self, responses):
|
|
self.responses = list(responses)
|
|
self.calls = []
|
|
|
|
def request(self, method, url, **kwargs):
|
|
self.calls.append({
|
|
"method": method,
|
|
"url": url,
|
|
"kwargs": kwargs,
|
|
})
|
|
if not self.responses:
|
|
raise AssertionError(f"未准备响应: {method} {url}")
|
|
return self.responses.pop(0)
|
|
|
|
|
|
def test_temp_mail_ignores_six_digit_domain_when_extracting_code():
|
|
service = TempMailService({
|
|
"base_url": "https://mail.example.com",
|
|
"admin_password": "admin-secret",
|
|
"domain": "123456.com",
|
|
})
|
|
service.http_client = FakeHTTPClient([
|
|
FakeResponse(
|
|
payload={
|
|
"results": [
|
|
{
|
|
"id": "msg-1",
|
|
"source": "OpenAI <noreply@openai.com>",
|
|
"subject": "Your OpenAI verification code",
|
|
"body": (
|
|
"Email sent to tester@123456.com.\n"
|
|
"Your OpenAI verification code is 654321"
|
|
),
|
|
}
|
|
]
|
|
}
|
|
)
|
|
])
|
|
|
|
code = service.get_verification_code(
|
|
email="tester@123456.com",
|
|
timeout=1,
|
|
)
|
|
|
|
assert code == "654321"
|
|
|
|
|
|
def test_freemail_prefers_real_code_over_worker_extracted_domain_digits():
|
|
service = FreemailService({
|
|
"base_url": "https://mail.example.com",
|
|
"admin_token": "jwt-token",
|
|
})
|
|
service.http_client = FakeHTTPClient([
|
|
FakeResponse(
|
|
payload=[
|
|
{
|
|
"id": "msg-1",
|
|
"sender": "noreply@openai.com",
|
|
"subject": "Your OpenAI verification code",
|
|
"preview": "Verification email sent to tester@123456.com",
|
|
"verification_code": "123456",
|
|
}
|
|
]
|
|
),
|
|
FakeResponse(
|
|
payload={
|
|
"content": (
|
|
"To: tester@123456.com\n"
|
|
"Your OpenAI verification code is 654321"
|
|
),
|
|
"html_content": "",
|
|
}
|
|
),
|
|
])
|
|
|
|
code = service.get_verification_code(
|
|
email="tester@123456.com",
|
|
timeout=1,
|
|
)
|
|
|
|
assert code == "654321"
|