feat: add local zero-cost configuration
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from javis.config.local_config import (
|
||||
LocalConfigError,
|
||||
load_local_defaults,
|
||||
write_gemini_activation,
|
||||
)
|
||||
from javis.config.settings import ConfigurationError, Settings, default_data_dir
|
||||
|
||||
|
||||
@@ -61,6 +67,56 @@ class SettingsTests(unittest.TestCase):
|
||||
}
|
||||
)
|
||||
|
||||
def test_local_toml_enables_only_confirmed_free_gemini(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
data_dir = Path(directory)
|
||||
write_gemini_activation(data_dir / "javis.toml")
|
||||
|
||||
settings = Settings.from_env({"JAVIS_DATA_DIR": str(data_dir)})
|
||||
|
||||
self.assertTrue(settings.gemini_enabled)
|
||||
self.assertTrue(settings.free_only)
|
||||
self.assertTrue(settings.billing_confirmed_disabled)
|
||||
self.assertEqual(settings.provider_mode, "auto")
|
||||
self.assertEqual(settings.gemini_max_retries, 1)
|
||||
|
||||
def test_environment_can_safely_disable_local_cloud_config(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
data_dir = Path(directory)
|
||||
write_gemini_activation(data_dir / "javis.toml")
|
||||
|
||||
settings = Settings.from_env(
|
||||
{
|
||||
"JAVIS_DATA_DIR": str(data_dir),
|
||||
"JAVIS_GEMINI_ENABLED": "false",
|
||||
}
|
||||
)
|
||||
|
||||
self.assertFalse(settings.gemini_enabled)
|
||||
|
||||
def test_activation_file_contains_no_secret_and_is_not_overwritten(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "javis.toml"
|
||||
write_gemini_activation(path)
|
||||
content = path.read_text(encoding="utf-8")
|
||||
|
||||
self.assertNotIn("api_key", content.lower())
|
||||
self.assertNotIn("password", content.lower())
|
||||
self.assertEqual(
|
||||
load_local_defaults(path)["JAVIS_GEMINI_BILLING_CONFIRMED_DISABLED"],
|
||||
"true",
|
||||
)
|
||||
with self.assertRaises(LocalConfigError):
|
||||
write_gemini_activation(path)
|
||||
|
||||
def test_malformed_local_config_is_rejected(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
data_dir = Path(directory)
|
||||
(data_dir / "javis.toml").write_text("[providers", encoding="utf-8")
|
||||
|
||||
with self.assertRaises(ConfigurationError):
|
||||
Settings.from_env({"JAVIS_DATA_DIR": str(data_dir)})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user