Files
outlookEmailPlus/tests/test_domain_provider_map.py
T
胡绍康andCopilot 973412d44c feat: 账号导入导出无缝迁移(PRD-00006/FD-00006)
- 新增 auto 智能混合导入模式:自动识别 Outlook/IMAP/GPTMail 行类型
- 域名推断 provider(gmail/qq/163/126/yahoo/aliyun/outlook)
- 自动按 provider 创建/复用分组
- 支持重复策略(skip/overwrite)和兜底 IMAP 设置
- 导出升级为 v2:头部元信息 + GPTMail 分段 + 时间戳文件名
- 前端导入模态框支持 auto 模式 UI 交互
- 新增 41 个单元测试(163 总测试全部通过)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-04 20:33:19 +08:00

89 lines
3.7 KiB
Python

"""tests/test_domain_provider_map.py — FD-00006 域名推断单元测试"""
import unittest
class TestDomainProviderMap(unittest.TestCase):
def test_infer_gmail(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertEqual(infer_provider_from_email("user@gmail.com"), "gmail")
self.assertEqual(infer_provider_from_email("user@googlemail.com"), "gmail")
def test_infer_qq(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertEqual(infer_provider_from_email("user@qq.com"), "qq")
self.assertEqual(infer_provider_from_email("user@foxmail.com"), "qq")
def test_infer_163(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertEqual(infer_provider_from_email("user@163.com"), "163")
def test_infer_126(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertEqual(infer_provider_from_email("user@126.com"), "126")
def test_infer_yahoo(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertEqual(infer_provider_from_email("user@yahoo.com"), "yahoo")
self.assertEqual(infer_provider_from_email("user@yahoo.co.jp"), "yahoo")
def test_infer_aliyun(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertEqual(infer_provider_from_email("user@aliyun.com"), "aliyun")
self.assertEqual(infer_provider_from_email("user@alimail.com"), "aliyun")
def test_infer_outlook(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertEqual(infer_provider_from_email("user@outlook.com"), "outlook")
self.assertEqual(infer_provider_from_email("user@hotmail.com"), "outlook")
self.assertEqual(infer_provider_from_email("user@live.com"), "outlook")
self.assertEqual(infer_provider_from_email("user@live.cn"), "outlook")
def test_infer_unknown_domain(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertIsNone(infer_provider_from_email("user@unknown.org"))
self.assertIsNone(infer_provider_from_email("user@company.co"))
def test_infer_invalid_input(self):
from outlook_web.services.providers import infer_provider_from_email
self.assertIsNone(infer_provider_from_email(""))
self.assertIsNone(infer_provider_from_email(None))
self.assertIsNone(infer_provider_from_email("no-at-sign"))
def test_known_provider_keys(self):
from outlook_web.services.providers import KNOWN_PROVIDER_KEYS, MAIL_PROVIDERS
self.assertEqual(KNOWN_PROVIDER_KEYS, set(MAIL_PROVIDERS.keys()))
self.assertIn("outlook", KNOWN_PROVIDER_KEYS)
self.assertIn("gmail", KNOWN_PROVIDER_KEYS)
self.assertIn("custom", KNOWN_PROVIDER_KEYS)
def test_provider_group_name(self):
from outlook_web.services.providers import PROVIDER_GROUP_NAME
self.assertEqual(PROVIDER_GROUP_NAME["outlook"], "Outlook")
self.assertEqual(PROVIDER_GROUP_NAME["gptmail"], "临时邮箱")
def test_get_provider_list_has_auto_first(self):
from outlook_web.services.providers import get_provider_list
providers = get_provider_list()
self.assertGreater(len(providers), 0)
self.assertEqual(providers[0]["key"], "auto")
self.assertEqual(providers[0]["account_type"], "mixed")
# auto 不应出现在第二个及以后的位置
keys = [p["key"] for p in providers]
self.assertEqual(keys.count("auto"), 1)
if __name__ == "__main__":
unittest.main()