Refactor AI daily report pipeline
This commit is contained in:
87
tests/test_env_config.py
Normal file
87
tests/test_env_config.py
Normal file
@@ -0,0 +1,87 @@
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
from ai_daily_report.env import resolve_blog_token, resolve_llm_config
|
||||
|
||||
|
||||
class EnvConfigTests(unittest.TestCase):
|
||||
def test_resolve_llm_config_prefers_generic_values(self):
|
||||
config = resolve_llm_config(
|
||||
{
|
||||
"LLM_API_KEY": "generic-key",
|
||||
"LLM_BASE_URL": "https://generic.example/v1",
|
||||
"LLM_MODEL": "generic-model",
|
||||
"SUB2API_API_KEY": "sub-key",
|
||||
"SUB2API_BASE_URL": "https://sub.example/v1",
|
||||
"SUB2API_MODEL": "sub-model",
|
||||
}
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
config,
|
||||
{
|
||||
"api_key": "generic-key",
|
||||
"base_url": "https://generic.example/v1",
|
||||
"model": "generic-model",
|
||||
},
|
||||
)
|
||||
|
||||
def test_resolve_llm_config_reports_missing_fields(self):
|
||||
with self.assertRaisesRegex(ValueError, "missing_llm_config: LLM_BASE_URL,LLM_MODEL"):
|
||||
resolve_llm_config({"LLM_API_KEY": "key"})
|
||||
|
||||
def test_resolve_llm_config_follows_hermes_provider_config(self):
|
||||
with TemporaryDirectory() as temp_dir:
|
||||
hermes_dir = Path(temp_dir)
|
||||
(hermes_dir / "config.yaml").write_text(
|
||||
"""
|
||||
model:
|
||||
provider: sub2api
|
||||
default: findmini/gpt-5.5
|
||||
base_url: http://sub2api.example/v1
|
||||
""".strip(),
|
||||
encoding="utf-8",
|
||||
)
|
||||
(hermes_dir / ".env").write_text("SUB2API_API_KEY=hermes-key\n", encoding="utf-8")
|
||||
|
||||
config = resolve_llm_config({}, hermes_dir=hermes_dir)
|
||||
|
||||
self.assertEqual(
|
||||
config,
|
||||
{
|
||||
"api_key": "hermes-key",
|
||||
"base_url": "http://sub2api.example/v1",
|
||||
"model": "findmini/gpt-5.5",
|
||||
},
|
||||
)
|
||||
|
||||
def test_resolve_llm_config_uses_hermes_auth_json_env_source(self):
|
||||
with TemporaryDirectory() as temp_dir:
|
||||
hermes_dir = Path(temp_dir)
|
||||
(hermes_dir / "config.yaml").write_text(
|
||||
"""
|
||||
model:
|
||||
provider: sub2api
|
||||
default: findmini/gpt-5.5
|
||||
base_url: http://sub2api.example/v1
|
||||
""".strip(),
|
||||
encoding="utf-8",
|
||||
)
|
||||
(hermes_dir / "auth.json").write_text(
|
||||
'{"credential_pool": {"sub2api": [{"source": "env:SUB2API_API_KEY"}]}}',
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
config = resolve_llm_config({"SUB2API_API_KEY": "auth-env-key"}, hermes_dir=hermes_dir)
|
||||
|
||||
self.assertEqual(config["api_key"], "auth-env-key")
|
||||
self.assertEqual(config["base_url"], "http://sub2api.example/v1")
|
||||
self.assertEqual(config["model"], "findmini/gpt-5.5")
|
||||
|
||||
def test_resolve_blog_token_uses_supported_names(self):
|
||||
self.assertEqual(resolve_blog_token({"EPHRON_SERVICE_TOKEN": "token"}), "token")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user