feat: 完成账号目录slug工具
- 新增 app/config.py,生成稳定账号 slug 并创建 user-data-dir - db 账号创建复用统一 slug 规则 - 新增 config 单元测试覆盖 slug 和目录创建 - 更新任务看板、API 合约、当前状态和进度记录
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user