import unittest from decision_server.protocol import DecisionError from decision_server.web_config import MemoryConnections, configure, public_config, website_origin def config(provider="deepseek", model="deepseek-flash"): return { "llm": {"provider": provider, "model": model, "apiKey": "llm-secret-fixture"}, "jev": {"apiKey": "jev-secret-fixture"}, } class WebsiteConfigTests(unittest.TestCase): def test_atomic_memory_only_and_no_secret_response(self): store = MemoryConnections() result = configure(store.values, config(), ()) self.assertEqual(store.values, {}) self.assertNotIn("secret-fixture", str(public_config(result))) self.assertEqual(result["jev"].model, "typesafe/jev-1.13") self.assertFalse(hasattr(store, "path")) bad = config() bad["jev"]["apiKey"] = "bad key" with self.assertRaises(DecisionError): configure(result, bad, ()) self.assertEqual(result["jev"].key, "jev-secret-fixture") def test_reject_arbitrary_urls_unknown_models_and_providers(self): for field in ("baseUrl", "protocol", "command"): data = config() data["llm"][field] = "http://169.254.169.254" with self.assertRaises(DecisionError): configure({}, data, ()) for provider, model in (("other", "x"), ("openrouter", "unknown"), ("codex", "x")): with self.assertRaises(DecisionError): configure({}, config(provider, model), ()) def test_key_reuse_only_same_provider_no_cross_role_reuse(self): values = configure({}, config(), ()) draft = {"llm": {"provider": "deepseek", "model": "deepseek-flash"}, "jev": {}} self.assertEqual(configure(values, draft, ()), values) draft["llm"] = {"provider": "openrouter", "model": "vendor/model"} with self.assertRaisesRegex(DecisionError, "api_key_required"): configure(values, draft, ("vendor/model",)) draft["llm"]["apiKey"] = "new-router-key" result = configure(values, draft, ("vendor/model",)) self.assertEqual(result["jev"].key, values["jev"].key) def test_public_origin_requires_https(self): self.assertEqual( website_origin("https://cadworld-sim.robotquan.com"), "cadworld-sim.robotquan.com" ) for value in ("http://public.test", "https://x/path", "https://user@x", "https://x?key=x"): with self.assertRaises(DecisionError): website_origin(value) self.assertEqual( website_origin("http://localhost:5173", development=True), "localhost:5173" )