Files
story/internal/providermemory/client_test.go
T

56 lines
1.9 KiB
Go
Raw Normal View History

2026-08-29 21:56:51 +08:00
package providermemory
import (
"context"
"net/http"
"net/http/httptest"
"testing"
"time"
)
func TestHTTPClientUpsertAndDelete(t *testing.T) {
requests := 0
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
requests++
if r.Header.Get("Authorization") != "Bearer test-key" || r.Header.Get("Idempotency-Key") == "" {
t.Fatalf("missing provider authentication or idempotency header")
}
switch {
case r.Method == http.MethodPost && r.URL.Path == "/v1/memories:upsert":
w.Header().Set("Content-Type", "application/json")
_, _ = w.Write([]byte(`{"provider_ref":"provider-memory-1"}`))
case r.Method == http.MethodDelete && r.URL.Path == "/v1/memories/provider-memory-1":
w.WriteHeader(http.StatusNoContent)
default:
http.NotFound(w, r)
}
}))
defer server.Close()
client, err := NewHTTPClient(server.URL, "test-key", time.Second)
if err != nil {
t.Fatal(err)
}
providerRef, err := client.Upsert(context.Background(), Memory{TenantID: "tenant", HouseholdID: "household", SubjectID: "subject", MemoryID: "memory", MemoryVersion: "version", VersionNo: 1, Content: "content", ContentDigest: "digest", IdempotencyKey: "upsert-1"})
if err != nil || providerRef != "provider-memory-1" {
t.Fatalf("providerRef=%q err=%v", providerRef, err)
}
if err := client.Delete(context.Background(), providerRef, "delete-1"); err != nil {
t.Fatal(err)
}
if requests != 2 {
t.Fatalf("requests=%d", requests)
}
}
func TestHTTPClientTreatsMissingDeleteAsSuccess(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { http.NotFound(w, nil) }))
defer server.Close()
client, err := NewHTTPClient(server.URL, "test-key", time.Second)
if err != nil {
t.Fatal(err)
}
if err := client.Delete(context.Background(), "missing", "delete-missing"); err != nil {
t.Fatal(err)
}
}