feat(cloudflare): 支持管理员创建临时邮箱
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
import cf_mail_debug
|
||||
import grok_register_ttk as app
|
||||
|
||||
|
||||
class DummyResponse:
|
||||
def __init__(self, payload):
|
||||
self._payload = payload
|
||||
self.text = ""
|
||||
|
||||
def raise_for_status(self):
|
||||
return None
|
||||
|
||||
def json(self):
|
||||
return self._payload
|
||||
|
||||
|
||||
class CloudflareAdminCreateTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.original_config = app.config.copy()
|
||||
|
||||
def tearDown(self):
|
||||
app.config = self.original_config
|
||||
|
||||
def test_app_uses_admin_new_address_with_x_admin_auth(self):
|
||||
app.config.update({
|
||||
"cloudflare_api_key": "admin-secret",
|
||||
"cloudflare_auth_mode": "x-admin-auth",
|
||||
"cloudflare_path_accounts": "/admin/new_address",
|
||||
"defaultDomains": "vitassk.com",
|
||||
})
|
||||
captured = {}
|
||||
|
||||
def fake_post(url, **kwargs):
|
||||
captured["url"] = url
|
||||
captured.update(kwargs)
|
||||
return DummyResponse({"address": "adminuser@vitassk.com", "jwt": "address-jwt"})
|
||||
|
||||
with patch.object(app, "generate_username", return_value="adminuser"), \
|
||||
patch.object(app, "http_post", side_effect=fake_post):
|
||||
address, jwt = app.cloudflare_create_temp_address("https://temp-mail.ikun.day")
|
||||
|
||||
self.assertEqual(address, "adminuser@vitassk.com")
|
||||
self.assertEqual(jwt, "address-jwt")
|
||||
self.assertEqual(captured["url"], "https://temp-mail.ikun.day/admin/new_address")
|
||||
self.assertEqual(captured["json"], {
|
||||
"name": "adminuser",
|
||||
"domain": "vitassk.com",
|
||||
"enablePrefix": True,
|
||||
})
|
||||
self.assertEqual(captured["headers"]["Content-Type"], "application/json")
|
||||
self.assertEqual(captured["headers"]["x-admin-auth"], "admin-secret")
|
||||
|
||||
def test_debug_tool_can_create_address_through_admin_api(self):
|
||||
captured = {}
|
||||
|
||||
def fake_post(url, **kwargs):
|
||||
captured["url"] = url
|
||||
captured.update(kwargs)
|
||||
return DummyResponse({"address": "debuguser@vitassk.com", "jwt": "debug-jwt"})
|
||||
|
||||
with patch.object(cf_mail_debug.requests, "post", side_effect=fake_post):
|
||||
address, jwt = cf_mail_debug.create_address(
|
||||
"https://temp-mail.ikun.day",
|
||||
auth_mode="x-admin-auth",
|
||||
api_key="admin-secret",
|
||||
create_path="/admin/new_address",
|
||||
domain="vitassk.com",
|
||||
name="debuguser",
|
||||
)
|
||||
|
||||
self.assertEqual(address, "debuguser@vitassk.com")
|
||||
self.assertEqual(jwt, "debug-jwt")
|
||||
self.assertEqual(captured["url"], "https://temp-mail.ikun.day/admin/new_address")
|
||||
self.assertEqual(captured["json"], {
|
||||
"name": "debuguser",
|
||||
"domain": "vitassk.com",
|
||||
"enablePrefix": True,
|
||||
})
|
||||
self.assertEqual(captured["headers"]["Content-Type"], "application/json")
|
||||
self.assertEqual(captured["headers"]["x-admin-auth"], "admin-secret")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user