Files
any-auto-register/tests/test_luckmail_mailbox.py
2026-04-02 00:02:57 +08:00

56 lines
1.9 KiB
Python

import unittest
from unittest import mock
from core.base_mailbox import LuckMailMailbox, MailboxAccount
from core.luckmail.models import TokenMailItem, TokenMailList
class LuckMailMailboxTests(unittest.TestCase):
def _build_mailbox(self):
mailbox = LuckMailMailbox.__new__(LuckMailMailbox)
mailbox._client = mock.Mock()
mailbox._project_code = "openai"
mailbox._email_type = None
mailbox._domain = None
mailbox._order_no = None
mailbox._token = "tok_demo"
mailbox._email = "demo@example.com"
mailbox._log_fn = None
return mailbox
@mock.patch("time.sleep", return_value=None)
def test_wait_for_code_skips_excluded_purchase_code_and_keeps_polling_for_fresh_mail(self, _sleep):
mailbox = self._build_mailbox()
mailbox.get_current_ids = mock.Mock(return_value={"m1"})
mailbox._client.user.get_token_mails.side_effect = [
TokenMailList(
email_address="demo@example.com",
project="openai",
mails=[
TokenMailItem(message_id="m1", subject="Your OpenAI code is 111111"),
],
),
TokenMailList(
email_address="demo@example.com",
project="openai",
mails=[
TokenMailItem(message_id="m1", subject="Your OpenAI code is 111111"),
TokenMailItem(message_id="m2", subject="Your OpenAI code is 222222"),
],
),
]
code = mailbox.wait_for_code(
MailboxAccount(email="demo@example.com", account_id="tok_demo"),
timeout=5,
exclude_codes={"111111"},
)
self.assertEqual(code, "222222")
mailbox.get_current_ids.assert_called_once()
self.assertEqual(mailbox._client.user.get_token_mails.call_count, 2)
if __name__ == "__main__":
unittest.main()