diff options
| author | Danilo M. <danix@danix.xyz> | 2026-06-30 10:55:37 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-06-30 10:55:37 +0200 |
| commit | 8e7cb60beaa6fe01c1e4de57d90f434bcb3bd6a7 (patch) | |
| tree | 25bca73bdd4175c81fe1144d6b75c0752c8ba718 /tests | |
| parent | b357d987b3a149924dbc4eb584ab36529aaf195d (diff) | |
| download | firefly-cli-8e7cb60beaa6fe01c1e4de57d90f434bcb3bd6a7.tar.gz firefly-cli-8e7cb60beaa6fe01c1e4de57d90f434bcb3bd6a7.zip | |
feat: config load/write with env override
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/unit/test_config.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py new file mode 100644 index 0000000..de90a3b --- /dev/null +++ b/tests/unit/test_config.py @@ -0,0 +1,35 @@ +import os, tempfile, unittest +from pathlib import Path +from firefly_cli import config +from firefly_cli.errors import ConfigError + +class TestConfig(unittest.TestCase): + def setUp(self): + self.dir = tempfile.TemporaryDirectory() + self.path = Path(self.dir.name) / "config.toml" + def tearDown(self): + self.dir.cleanup() + for k in ("FIREFLY_URL", "FIREFLY_TOKEN"): + os.environ.pop(k, None) + + def test_write_then_read_roundtrip(self): + config.write("https://f.example/", "tok123", path=self.path) + cfg = config.load(path=self.path, env={}) + self.assertEqual(cfg["url"], "https://f.example") # trailing slash trimmed + self.assertEqual(cfg["token"], "tok123") + + def test_env_overrides_file(self): + config.write("https://file/", "filetok", path=self.path) + cfg = config.load(path=self.path, + env={"FIREFLY_URL": "https://env", "FIREFLY_TOKEN": "envtok"}) + self.assertEqual(cfg["url"], "https://env") + self.assertEqual(cfg["token"], "envtok") + + def test_missing_everything_raises_configerror(self): + with self.assertRaises(ConfigError): + config.load(path=self.path, env={}) + + def test_env_only_no_file(self): + cfg = config.load(path=self.path, + env={"FIREFLY_URL": "https://env/", "FIREFLY_TOKEN": "t"}) + self.assertEqual(cfg["url"], "https://env") |
