summaryrefslogtreecommitdiff
path: root/internal/config/config_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/config/config_test.go')
-rw-r--r--internal/config/config_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/config/config_test.go b/internal/config/config_test.go
index 0d47ca0..6991354 100644
--- a/internal/config/config_test.go
+++ b/internal/config/config_test.go
@@ -165,3 +165,46 @@ func TestLocalModel_UseForElaborate_ExplicitTrue(t *testing.T) {
t.Error("explicit true should opt in")
}
}
+
+func TestProvidersConfig_TOMLRoundTrip(t *testing.T) {
+ dir := t.TempDir()
+ path := filepath.Join(dir, "config.toml")
+ toml := `
+[providers.groq]
+endpoint = "https://api.groq.com/openai/v1"
+api_key = "gsk_abc"
+default_model = "llama-3.3-70b-versatile"
+timeout_seconds = 30
+
+[providers.anthropic]
+api_key = "sk-ant-xyz"
+default_model = "claude-sonnet-4-5"
+`
+ if err := os.WriteFile(path, []byte(toml), 0600); err != nil {
+ t.Fatal(err)
+ }
+ t.Setenv("HOME", dir)
+
+ cfg, err := LoadFile(path)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if len(cfg.Providers) != 2 {
+ t.Fatalf("expected 2 providers, got %d: %+v", len(cfg.Providers), cfg.Providers)
+ }
+ groq, ok := cfg.Providers["groq"]
+ if !ok {
+ t.Fatal("expected [providers.groq] table")
+ }
+ if groq.Endpoint != "https://api.groq.com/openai/v1" || groq.APIKey != "gsk_abc" ||
+ groq.DefaultModel != "llama-3.3-70b-versatile" || groq.TimeoutSeconds != 30 {
+ t.Errorf("groq provider config: %+v", groq)
+ }
+ anthropic, ok := cfg.Providers["anthropic"]
+ if !ok {
+ t.Fatal("expected [providers.anthropic] table")
+ }
+ if anthropic.Endpoint != "" || anthropic.APIKey != "sk-ant-xyz" || anthropic.DefaultModel != "claude-sonnet-4-5" {
+ t.Errorf("anthropic provider config: %+v", anthropic)
+ }
+}