Files
cmshoppe/tests/test_config.py
T

49 lines
1.6 KiB
Python
Raw Normal View History

2026-06-27 09:21:33 +08:00
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()