package store import ( "path/filepath" "testing" ) func testKey() []byte { k := make([]byte, 32) for i := range k { k[i] = byte(i) } return k } // openTemp opens a fresh store in a temp dir. func openTemp(t *testing.T) *Store { t.Helper() p := filepath.Join(t.TempDir(), "emcli.db") s, err := Open(p, testKey()) if err != nil { t.Fatalf("Open: %v", err) } t.Cleanup(func() { s.Close() }) return s } func TestOpenCreatesSchemaAndIsIdempotent(t *testing.T) { p := filepath.Join(t.TempDir(), "emcli.db") s, err := Open(p, testKey()) if err != nil { t.Fatalf("first Open: %v", err) } v, err := s.GetSetting("schema_version") if err != nil || v != "1" { t.Fatalf("schema_version: %q err=%v", v, err) } s.Close() // Re-open: must not error or duplicate. s2, err := Open(p, testKey()) if err != nil { t.Fatalf("second Open: %v", err) } defer s2.Close() if v, _ := s2.GetSetting("schema_version"); v != "1" { t.Fatalf("schema_version after reopen: %q", v) } } func TestSettingsRoundTrip(t *testing.T) { s := openTemp(t) if err := s.SetSetting("audit_retention_days", "30"); err != nil { t.Fatalf("SetSetting: %v", err) } got, err := s.GetSetting("audit_retention_days") if err != nil || got != "30" { t.Fatalf("got %q err=%v", got, err) } // Upsert overwrites. _ = s.SetSetting("audit_retention_days", "7") if got, _ := s.GetSetting("audit_retention_days"); got != "7" { t.Fatalf("upsert failed: %q", got) } }