56 lines
1.9 KiB
Go
56 lines
1.9 KiB
Go
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)
|
|
}
|
|
}
|