summaryrefslogtreecommitdiffstats
path: root/tests/unit
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-06-30 10:55:37 +0200
committerDanilo M. <danix@danix.xyz>2026-06-30 10:55:37 +0200
commit8e7cb60beaa6fe01c1e4de57d90f434bcb3bd6a7 (patch)
tree25bca73bdd4175c81fe1144d6b75c0752c8ba718 /tests/unit
parentb357d987b3a149924dbc4eb584ab36529aaf195d (diff)
downloadfirefly-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/unit')
-rw-r--r--tests/unit/test_config.py35
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")