- 新增 app/config.py,生成稳定账号 slug 并创建 user-data-dir - db 账号创建复用统一 slug 规则 - 新增 config 单元测试覆盖 slug 和目录创建 - 更新任务看板、API 合约、当前状态和进度记录
49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
import os
|
|
import sys
|
|
import unittest
|
|
|
|
sys.path.insert(0, os.path.dirname(__file__))
|
|
|
|
from _helpers import TempDirMixin
|
|
|
|
from app import config
|
|
|
|
|
|
class ConfigPathTests(TempDirMixin, unittest.TestCase):
|
|
def test_make_slug_is_stable_and_safe(self):
|
|
self.assertEqual("alias_cdb6fdbe", config.make_slug("alias"))
|
|
self.assertEqual("my_shop_01_b92aea49", config.make_slug("My Shop 01"))
|
|
|
|
chinese_slug = config.make_slug("台湾店铺")
|
|
self.assertTrue(chinese_slug.startswith("account_"))
|
|
self.assertRegex(chinese_slug, r"^account_[0-9a-f]{8}$")
|
|
|
|
with self.assertRaises(config.ConfigPathError):
|
|
config.make_slug("")
|
|
|
|
def test_ensure_user_data_dir_creates_absolute_path(self):
|
|
with self.make_temp_dir() as temp_dir:
|
|
slug = config.make_slug("alias")
|
|
path = config.ensure_user_data_dir(slug, root=temp_dir)
|
|
same_path = config.ensure_user_data_dir(slug, root=temp_dir)
|
|
|
|
self.assertEqual(path, same_path)
|
|
self.assertTrue(os.path.isabs(path))
|
|
self.assertTrue(os.path.isdir(path))
|
|
self.assertEqual(slug, os.path.basename(path))
|
|
|
|
self.assert_removed(temp_dir)
|
|
|
|
def test_ensure_user_data_dir_rejects_unsafe_slug(self):
|
|
with self.make_temp_dir() as temp_dir:
|
|
for slug in ("../alias", "Alias", "a-b", ""):
|
|
with self.subTest(slug=slug):
|
|
with self.assertRaises(config.ConfigPathError):
|
|
config.ensure_user_data_dir(slug, root=temp_dir)
|
|
|
|
self.assert_removed(temp_dir)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|