UI 改进: - 设置页面内嵌显示(不再弹窗) - 临时邮箱卡片添加验证码提取按钮 - 导入账号弹窗 textarea 样式优化 - 账号头像 8 色渐变轮转 - 临时邮箱页顶栏邮箱点击复制 - 邮箱管理页自动选中默认分组 - 切换分组时重置邮件列 UI - 修复收件箱/垃圾邮件 Tab 切换(.folder-tab → .email-tab) - 修复从临时邮箱返回后账号列数据残留 - 仪表盘分组列表可点击导航 恢复: - 恢复 .github/ CI 工作流 - 恢复 tests/ 测试目录 - 恢复 docs/ 文档目录 - 恢复 CONTRIBUTING.md, SECURITY.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import importlib
|
||
import os
|
||
import sys
|
||
import tempfile
|
||
from pathlib import Path
|
||
|
||
_TEMP_DIR = tempfile.TemporaryDirectory(prefix="outlookEmail-tests-")
|
||
_DB_PATH = Path(_TEMP_DIR.name) / "test.db"
|
||
|
||
|
||
def import_web_app_module():
|
||
"""
|
||
以"可测试"的方式导入 web_outlook_app:
|
||
- 注入必要环境变量(SECRET_KEY / DATABASE_PATH 等)
|
||
- 禁用调度器自启动,避免测试期间启动后台线程
|
||
- 将 DB 指向临时文件,避免污染本地 data/
|
||
"""
|
||
os.environ["SECRET_KEY"] = "test-secret-key-32bytes-minimum-0000000000000000"
|
||
os.environ["LOGIN_PASSWORD"] = "testpass123" # >= 8
|
||
os.environ["SCHEDULER_AUTOSTART"] = "false"
|
||
os.environ["DATABASE_PATH"] = str(_DB_PATH)
|
||
|
||
if "web_outlook_app" in sys.modules:
|
||
return sys.modules["web_outlook_app"]
|
||
|
||
module = importlib.import_module("web_outlook_app")
|
||
|
||
# 测试配置:禁用 CSRF(避免额外 token 依赖),开启 TESTING
|
||
module.app.config.update(
|
||
TESTING=True,
|
||
WTF_CSRF_ENABLED=False,
|
||
WTF_CSRF_CHECK_DEFAULT=False,
|
||
)
|
||
return module
|
||
|
||
|
||
def clear_login_attempts():
|
||
"""清理登录限制记录,避免测试间互相影响"""
|
||
from outlook_web.db import get_db
|
||
|
||
try:
|
||
db = get_db()
|
||
db.execute("DELETE FROM login_attempts")
|
||
db.commit()
|
||
except Exception:
|
||
pass
|