test_ui_assets.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from pathlib import Path
  2. import unittest
  3. ROOT = Path(__file__).resolve().parent
  4. class UiAssetsTests(unittest.TestCase):
  5. def test_static_ui_assets_define_dashboard_structure(self):
  6. index = (ROOT / "ui" / "index.html").read_text(encoding="utf-8")
  7. styles = (ROOT / "ui" / "styles.css").read_text(encoding="utf-8")
  8. app = (ROOT / "ui" / "app.js").read_text(encoding="utf-8")
  9. for required in ("SSO 快捷注册", "SSO 注册参数", "CPA 地址", "CPA 管理密钥", "代理地址(留空 = 直连)"):
  10. self.assertIn(required, index)
  11. for removed in (
  12. "配置中心",
  13. "账号注册",
  14. "API 配置",
  15. "代理配置",
  16. "邮件助手 URL",
  17. "邮箱轮询",
  18. "使用 1 个月免费 promo",
  19. "PayPal",
  20. "接码 API URL",
  21. "长链",
  22. "API Token",
  23. "CORS Allow-Origin",
  24. ):
  25. self.assertNotIn(removed, index)
  26. self.assertNotIn("CPA 账号池维护", index)
  27. self.assertNotIn("ChatGPT Plus 全自动注册 + CPA 账号池维护", index)
  28. self.assertNotIn('id="go"', index)
  29. self.assertNotIn('id="poolStatus"', index)
  30. self.assertNotIn("pool_maintainer", app)
  31. self.assertNotIn("startFullRun", app)
  32. self.assertNotIn("'/api/start'", app)
  33. self.assertNotIn("const FIELDS", app)
  34. self.assertNotIn("function saveConfig", app)
  35. self.assertNotIn("function activateConfigTab", app)
  36. self.assertIn('id="logDock"', index)
  37. self.assertIn('id="copyLog"', index)
  38. self.assertIn("function showErrorPopover", app)
  39. self.assertIn("async function copyTextToClipboard", app)
  40. self.assertIn("navigator.clipboard.writeText", app)
  41. self.assertIn("document.execCommand('copy')", app)
  42. self.assertIn(".app-shell", styles)
  43. self.assertIn(".log-dock", styles)
  44. self.assertIn(".error-popover", styles)
  45. def test_account_library_uses_readable_card_list(self):
  46. index = (ROOT / "ui" / "index.html").read_text(encoding="utf-8")
  47. styles = (ROOT / "ui" / "styles.css").read_text(encoding="utf-8")
  48. app = (ROOT / "ui" / "app.js").read_text(encoding="utf-8")
  49. self.assertIn('id="accountList"', index)
  50. self.assertNotIn('id="dbTable"', index)
  51. self.assertIn("function renderAccountCard", app)
  52. self.assertIn(".account-list", styles)
  53. self.assertIn(".account-card", styles)
  54. def test_server_serves_static_ui_instead_of_inline_index(self):
  55. server_py = (ROOT / "server.py").read_text(encoding="utf-8")
  56. self.assertIn("UI_DIR", server_py)
  57. self.assertIn("_send_static_file", server_py)
  58. self.assertNotIn("INDEX_HTML = r", server_py)
  59. self.assertNotIn("INDEX_HTML.encode", server_py)
  60. if __name__ == "__main__":
  61. unittest.main()