feat: complete T-530 cmhub URL normalization

This commit is contained in:
chengma
2026-07-06 10:31:36 +08:00
parent 42dd8a993f
commit b99019e954
14 changed files with 142 additions and 31 deletions
+28
View File
@@ -64,6 +64,34 @@ class AppConfigTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_cmhub_base_url_normalizes_to_gateway_root(self):
cases = {
"https://cmhub.example.com/": "https://cmhub.example.com",
"https://cmhub.example.com/api": "https://cmhub.example.com",
"https://cmhub.example.com/api/v1/": "https://cmhub.example.com",
"https://cmhub.example.com/some/path?x=1": "https://cmhub.example.com",
"http://localhost:8000/api/v1": "http://localhost:8000",
"localhost:8000/api/v1": "localhost:8000",
}
for raw, expected in cases.items():
with self.subTest(raw=raw):
self.assertEqual(expected, appconfig.normalize_cmhub_base_url(raw))
self.assertEqual(
expected + "/api/v1/models",
appconfig.cmhub_request_url(raw, "/api/v1/models"),
)
with self.make_temp_dir() as temp_dir:
config_path = os.path.join(temp_dir, "config.json")
config = appconfig.default_config()
config["ai"]["cmhub"]["base_url"] = "https://cmhub.example.com/api/v1/"
saved = appconfig.save_config(config, path=config_path)
self.assertEqual("https://cmhub.example.com", saved["ai"]["cmhub"]["base_url"])
loaded = appconfig.load_config(config_path)
self.assertEqual("https://cmhub.example.com", loaded["ai"]["cmhub"]["base_url"])
self.assert_removed(temp_dir)
def test_config_rejects_sensitive_fields(self):
with self.make_temp_dir() as temp_dir:
config_path = os.path.join(temp_dir, "config.json")