mirror of
https://github.com/zc-zhangchen/any-auto-register.git
synced 2026-05-08 16:24:07 +08:00
134 lines
4.5 KiB
Python
134 lines
4.5 KiB
Python
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from core.base_mailbox import MailboxAccount, create_mailbox
|
|
|
|
|
|
class CFWorkerMailboxTests(unittest.TestCase):
|
|
def _build_mailbox(self):
|
|
return create_mailbox(
|
|
"cfworker",
|
|
extra={
|
|
"cfworker_api_url": "https://example.invalid",
|
|
"cfworker_admin_token": "admin-token",
|
|
"cfworker_domain": "mail.example",
|
|
},
|
|
)
|
|
|
|
@patch("requests.request")
|
|
def test_get_email_issues_single_request_via_factory_mailbox(self, mock_request):
|
|
mock_request.return_value.status_code = 200
|
|
mock_request.return_value.text = '{"email":"user@mail.example","token":"token-123"}'
|
|
mock_request.return_value.json.return_value = {
|
|
"email": "user@mail.example",
|
|
"token": "token-123",
|
|
}
|
|
|
|
mailbox = self._build_mailbox()
|
|
|
|
account = mailbox.get_email()
|
|
|
|
self.assertEqual(account.email, "user@mail.example")
|
|
self.assertEqual(account.account_id, "token-123")
|
|
mock_request.assert_called_once_with(
|
|
"POST",
|
|
"https://example.invalid/admin/new_address",
|
|
params=None,
|
|
json={"enablePrefix": True, "name": unittest.mock.ANY, "domain": "mail.example"},
|
|
headers={
|
|
"accept": "application/json, text/plain, */*",
|
|
"content-type": "application/json",
|
|
"x-admin-auth": "admin-token",
|
|
},
|
|
proxies=None,
|
|
timeout=15,
|
|
)
|
|
|
|
@patch("requests.request")
|
|
def test_get_current_ids_issues_single_request_via_factory_mailbox(self, mock_request):
|
|
mock_request.return_value.status_code = 200
|
|
mock_request.return_value.text = '{"results":[{"id":101},{"id":202}]}'
|
|
mock_request.return_value.json.return_value = {
|
|
"results": [
|
|
{"id": 101},
|
|
{"id": 202},
|
|
]
|
|
}
|
|
mailbox = self._build_mailbox()
|
|
account = MailboxAccount(email="user@mail.example")
|
|
|
|
ids = mailbox.get_current_ids(account)
|
|
|
|
self.assertEqual(ids, {"101", "202"})
|
|
mock_request.assert_called_once_with(
|
|
"GET",
|
|
"https://example.invalid/admin/mails",
|
|
params={"limit": 20, "offset": 0, "address": "user@mail.example"},
|
|
json=None,
|
|
headers={
|
|
"accept": "application/json, text/plain, */*",
|
|
"content-type": "application/json",
|
|
"x-admin-auth": "admin-token",
|
|
},
|
|
proxies=None,
|
|
timeout=10,
|
|
)
|
|
|
|
@patch("requests.request")
|
|
def test_get_email_uses_static_subdomain(self, mock_request):
|
|
mock_request.return_value.status_code = 200
|
|
mock_request.return_value.text = '{"email":"user@mail.sub.example","token":"token-123"}'
|
|
mock_request.return_value.json.return_value = {
|
|
"email": "user@mail.sub.example",
|
|
"token": "token-123",
|
|
}
|
|
|
|
mailbox = create_mailbox(
|
|
"cfworker",
|
|
extra={
|
|
"cfworker_api_url": "https://example.invalid",
|
|
"cfworker_admin_token": "admin-token",
|
|
"cfworker_domain": "sub.example",
|
|
"cfworker_subdomain": "mail",
|
|
},
|
|
)
|
|
|
|
mailbox.get_email()
|
|
|
|
self.assertEqual(
|
|
mock_request.call_args.kwargs["json"]["domain"],
|
|
"mail.sub.example",
|
|
)
|
|
|
|
@patch("requests.request")
|
|
def test_get_email_uses_random_subdomain(self, mock_request):
|
|
mock_request.return_value.status_code = 200
|
|
mock_request.return_value.text = '{"email":"user@rand.sub.example","token":"token-123"}'
|
|
mock_request.return_value.json.return_value = {
|
|
"email": "user@rand.sub.example",
|
|
"token": "token-123",
|
|
}
|
|
|
|
mailbox = create_mailbox(
|
|
"cfworker",
|
|
extra={
|
|
"cfworker_api_url": "https://example.invalid",
|
|
"cfworker_admin_token": "admin-token",
|
|
"cfworker_domain": "sub.example",
|
|
"cfworker_subdomain": "mail",
|
|
"cfworker_random_subdomain": True,
|
|
},
|
|
)
|
|
|
|
with patch.object(type(mailbox), "_generate_subdomain_label", return_value="rand"):
|
|
mailbox.get_email()
|
|
|
|
self.assertEqual(
|
|
mock_request.call_args.kwargs["json"]["domain"],
|
|
"rand.mail.sub.example",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|