import base64 import json from src.config.constants import EmailServiceType, OPENAI_API_ENDPOINTS, OPENAI_PAGE_TYPES from src.core.http_client import OpenAIHTTPClient from src.core.openai.oauth import OAuthStart from src.core.register import RegistrationEngine from src.services.base import BaseEmailService class DummyResponse: def __init__(self, status_code=200, payload=None, text="", headers=None, on_return=None): self.status_code = status_code self._payload = payload self.text = text self.headers = headers or {} self.on_return = on_return def json(self): if self._payload is None: raise ValueError("no json payload") return self._payload class QueueSession: def __init__(self, steps): self.steps = list(steps) self.calls = [] self.cookies = {} def get(self, url, **kwargs): return self._request("GET", url, **kwargs) def post(self, url, **kwargs): return self._request("POST", url, **kwargs) def request(self, method, url, **kwargs): return self._request(method.upper(), url, **kwargs) def close(self): return None def _request(self, method, url, **kwargs): self.calls.append({ "method": method, "url": url, "kwargs": kwargs, }) if not self.steps: raise AssertionError(f"unexpected request: {method} {url}") expected_method, expected_url, response = self.steps.pop(0) assert method == expected_method assert url == expected_url if callable(response): response = response(self) if response.on_return: response.on_return(self) return response class FakeEmailService(BaseEmailService): def __init__(self, codes): super().__init__(EmailServiceType.TEMPMAIL) self.codes = list(codes) self.otp_requests = [] def create_email(self, config=None): return { "email": "tester@example.com", "service_id": "mailbox-1", } def get_verification_code(self, email, email_id=None, timeout=120, pattern=r"(?