fae11020a5
Agent half of slice-7 close-out finalized: cross-repo wire-contract test (escrowUploadRequest mirrors the hub), v0.9.0 CHANGELOG entry + REPORT + CLAUDE version line. No secrets. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
29 lines
900 B
Go
29 lines
900 B
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"reflect"
|
|
"sort"
|
|
"testing"
|
|
)
|
|
|
|
// TestEscrowUploadContract pins the agent→hub escrow wire shape. It MUST match the hub's ingest
|
|
// struct (felhom-hub api.escrowUploadRequest). Cross-repo, no shared module — this is the agent
|
|
// half of the contract guard; the hub has the mirror in its own test.
|
|
func TestEscrowUploadContract(t *testing.T) {
|
|
b, _ := json.Marshal(escrowUploadRequest{BlobB64: "x", KeyFingerprint: "y", Posture: "z", CreatedAt: "t"})
|
|
var m map[string]any
|
|
if err := json.Unmarshal(b, &m); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
got := make([]string, 0, len(m))
|
|
for k := range m {
|
|
got = append(got, k)
|
|
}
|
|
sort.Strings(got)
|
|
want := []string{"blob_b64", "created_at", "key_fingerprint", "posture"}
|
|
if !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("escrow wire contract drift: got %v want %v (must match the hub ingest struct)", got, want)
|
|
}
|
|
}
|