diff --git a/manifest/manifest.go b/manifest/manifest.go index 59c1b88..d82acb3 100644 --- a/manifest/manifest.go +++ b/manifest/manifest.go @@ -49,7 +49,8 @@ type Environment struct { } type SecretStore struct { - BackendPolicy string `toml:"backend_policy"` + BackendPolicy string `toml:"backend_policy"` + BitwardenCache *bool `toml:"bitwarden_cache"` } type Profiles struct { diff --git a/manifest/manifest_test.go b/manifest/manifest_test.go index 087b006..6b18139 100644 --- a/manifest/manifest_test.go +++ b/manifest/manifest_test.go @@ -235,6 +235,54 @@ description = " Client MCP interne " } } +func TestLoadParsesSecretStoreBitwardenCache(t *testing.T) { + dir := t.TempDir() + path := filepath.Join(dir, DefaultFile) + + const content = ` +[secret_store] +backend_policy = "bitwarden-cli" +bitwarden_cache = false +` + + if err := os.WriteFile(path, []byte(content), 0o600); err != nil { + t.Fatalf("WriteFile manifest: %v", err) + } + + file, err := Load(path) + if err != nil { + t.Fatalf("Load returned error: %v", err) + } + if file.SecretStore.BitwardenCache == nil { + t.Fatal("bitwarden cache option is nil, want explicit false pointer") + } + if *file.SecretStore.BitwardenCache { + t.Fatal("bitwarden cache option = true, want false") + } +} + +func TestLoadLeavesOmittedBitwardenCacheUnset(t *testing.T) { + dir := t.TempDir() + path := filepath.Join(dir, DefaultFile) + + const content = ` +[secret_store] +backend_policy = "bitwarden-cli" +` + + if err := os.WriteFile(path, []byte(content), 0o600); err != nil { + t.Fatalf("WriteFile manifest: %v", err) + } + + file, err := Load(path) + if err != nil { + t.Fatalf("Load returned error: %v", err) + } + if file.SecretStore.BitwardenCache != nil { + t.Fatalf("bitwarden cache option = %v, want nil when omitted", *file.SecretStore.BitwardenCache) + } +} + func TestLoadParsesConfigFields(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, DefaultFile)