65 lines
2.5 KiB
Python
65 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from agent_integration.config import AgentConfig, AgentConfigurationError
|
|
|
|
|
|
class AgentConfigTests(unittest.TestCase):
|
|
def test_from_env_requires_key_for_network_use(self):
|
|
with self.assertRaises(AgentConfigurationError):
|
|
AgentConfig.from_env({}, require_api_key=True)
|
|
|
|
def test_redacted_summary_never_contains_key(self):
|
|
secret = "df_open_do_not_print_this_value"
|
|
config = AgentConfig.from_env(
|
|
{
|
|
"DEERFLOW_OPEN_API_KEY": secret,
|
|
"DEERFLOW_BASE_URL": "https://example.test/",
|
|
"DEERFLOW_AUTH_MODE": "x-api-key",
|
|
"DEERFLOW_SESSION_DB": "runtime/test.sqlite3",
|
|
}
|
|
)
|
|
|
|
summary = config.redacted_summary()
|
|
|
|
self.assertEqual(summary["base_url"], "https://example.test")
|
|
self.assertEqual(summary["auth_mode"], "x-api-key")
|
|
self.assertTrue(summary["api_key_configured"])
|
|
self.assertNotIn(secret, repr(summary))
|
|
self.assertEqual(config.session_db, Path("runtime/test.sqlite3"))
|
|
|
|
def test_invalid_url_auth_mode_and_timeout_are_rejected(self):
|
|
cases = (
|
|
{"DEERFLOW_OPEN_API_KEY": "key", "DEERFLOW_BASE_URL": "not-a-url"},
|
|
{"DEERFLOW_OPEN_API_KEY": "key", "DEERFLOW_BASE_URL": "http://remote.example"},
|
|
{"DEERFLOW_OPEN_API_KEY": "key", "DEERFLOW_AUTH_MODE": "basic"},
|
|
{"DEERFLOW_OPEN_API_KEY": "key", "DEERFLOW_TIMEOUT_SECONDS": "0"},
|
|
)
|
|
for env in cases:
|
|
with self.subTest(env=env), self.assertRaises(AgentConfigurationError):
|
|
AgentConfig.from_env(env)
|
|
|
|
def test_example_placeholder_is_not_treated_as_configured(self):
|
|
config = AgentConfig.from_env(
|
|
{"DEERFLOW_OPEN_API_KEY": "df_open_replace_me"},
|
|
require_api_key=False,
|
|
)
|
|
self.assertFalse(config.api_key_configured)
|
|
with self.assertRaises(AgentConfigurationError):
|
|
AgentConfig.from_env({"DEERFLOW_OPEN_API_KEY": "df_open_replace_me"})
|
|
|
|
def test_plain_http_is_allowed_for_local_development_only(self):
|
|
config = AgentConfig.from_env(
|
|
{
|
|
"DEERFLOW_OPEN_API_KEY": "df_open_test",
|
|
"DEERFLOW_BASE_URL": "http://127.0.0.1:8000",
|
|
}
|
|
)
|
|
self.assertEqual(config.base_url, "http://127.0.0.1:8000")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main(verbosity=2)
|