package secretstore import ( "os" "path/filepath" "testing" ) func TestFileReaderObservesOtherProcessUpdatesAndFailsClosed(t *testing.T) { path := filepath.Join(t.TempDir(), "secrets.json") reader := FileReader{Path: path} writer, err := Open(path) if err != nil { t.Fatal(err) } key := "running/email/password" if _, ok := reader.Get(key); ok { t.Fatal("unexpected initial secret") } for _, value := range []string{"first-app-password", "rotated-app-password"} { if err := writer.Set(key, []byte(value)); err != nil { t.Fatal(err) } got, ok := reader.Get(key) if !ok || string(got) != value { t.Fatal("reader did not observe current snapshot") } } if err := writer.Delete(key); err != nil { t.Fatal(err) } if _, ok := reader.Get(key); ok { t.Fatal("deleted secret remained available") } if err := writer.Set(key, []byte("temporary")); err != nil { t.Fatal(err) } if err := os.WriteFile(path, []byte("invalid JSON"), 0600); err != nil { t.Fatal(err) } if _, ok := reader.Get(key); ok { t.Fatal("invalid snapshot reused stale secret") } }