feat: complete v0.3.1 agent workflow
This commit is contained in:
@@ -119,6 +119,9 @@ func TestDeleteNotFound(t *testing.T) {
|
||||
|
||||
func TestSaveRequiresID(t *testing.T) {
|
||||
store := tempStore(t)
|
||||
if err := store.Save(nil); err == nil {
|
||||
t.Fatal("expected error for nil session")
|
||||
}
|
||||
err := store.Save(&Session{Name: "no id"})
|
||||
if err == nil {
|
||||
t.Fatal("expected error for empty ID")
|
||||
@@ -172,3 +175,40 @@ func TestNewStoreCreatesDir(t *testing.T) {
|
||||
t.Error("expected directory")
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreMaintainsSessionIndex(t *testing.T) {
|
||||
store := tempStore(t)
|
||||
if err := store.Save(&Session{ID: "indexed", Name: "Indexed"}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(store.dir, sessionIndexFile)); err != nil {
|
||||
t.Fatalf("index not created: %v", err)
|
||||
}
|
||||
metas, err := store.loadIndex()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(metas) != 1 || metas[0].ID != "indexed" {
|
||||
t.Fatalf("index metadata = %+v", metas)
|
||||
}
|
||||
if err := store.Delete("indexed"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
metas, err = store.loadIndex()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(metas) != 0 {
|
||||
t.Fatalf("index after delete = %+v", metas)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreRejectsUnsafeSessionID(t *testing.T) {
|
||||
store := tempStore(t)
|
||||
if _, err := store.Load("../outside"); err == nil {
|
||||
t.Fatal("expected unsafe ID rejection")
|
||||
}
|
||||
if err := store.Save(&Session{ID: "a/b"}); err == nil {
|
||||
t.Fatal("expected unsafe ID rejection")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user