summaryrefslogtreecommitdiffstats
path: root/tests/unit/test_config.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_config.py')
-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")