46 lines
2.2 KiB
Go
46 lines
2.2 KiB
Go
package store
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"agent-system-backend/pkg/extension"
|
|
)
|
|
|
|
func TestContextManifestRejectsSourcesWithoutStableIdentity(t *testing.T) {
|
|
st, err := OpenSQLite(filepath.Join(t.TempDir(), "gate.db"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer st.Close()
|
|
complete := extension.ProjectContextManifest{ProjectID: "p1", AttemptID: "model-1", InputSHA256: "request-hash", Delivery: "attempted",
|
|
Included: []extension.ProjectContextManifestEntry{{SourceID: "s1", Revision: "r1", SourceHash: "h1", InputSHA256: "in"}},
|
|
OfferedReferences: []extension.ProjectEvidenceRef{{ID: "ref-1", SourceID: "doc", Revision: "r1", Hash: "hd"}},
|
|
ReadEvidence: []extension.ProjectContextManifestEntry{{ReferenceID: "ref-1", SourceID: "doc", Revision: "r1", SourceHash: "hd", InputSHA256: "body"}}}
|
|
broken := []func(*extension.ProjectContextManifest){
|
|
func(m *extension.ProjectContextManifest) { m.Included[0].SourceID = "" },
|
|
func(m *extension.ProjectContextManifest) { m.Included[0].SourceHash = "" },
|
|
func(m *extension.ProjectContextManifest) { m.Included[0].InputSHA256 = "" },
|
|
func(m *extension.ProjectContextManifest) { m.OfferedReferences[0].ID = "" },
|
|
func(m *extension.ProjectContextManifest) { m.OfferedReferences[0].Hash = "" },
|
|
func(m *extension.ProjectContextManifest) { m.ReadEvidence[0].ReferenceID = "" },
|
|
func(m *extension.ProjectContextManifest) { m.ReadEvidence[0].Revision = "" },
|
|
}
|
|
for i, mutate := range broken {
|
|
m := complete
|
|
m.Included = append([]extension.ProjectContextManifestEntry(nil), complete.Included...)
|
|
m.OfferedReferences = append([]extension.ProjectEvidenceRef(nil), complete.OfferedReferences...)
|
|
m.ReadEvidence = append([]extension.ProjectContextManifestEntry(nil), complete.ReadEvidence...)
|
|
mutate(&m)
|
|
if err := st.AppendContextManifest("alice", "conv-1", m); err == nil {
|
|
t.Fatalf("case %d: unrecheckable source admitted as model input", i)
|
|
}
|
|
}
|
|
if got, err := st.ListContextManifests("alice", "conv-1"); err != nil || len(got) != 0 {
|
|
t.Fatalf("rejected receipts persisted: %+v err=%v", got, err)
|
|
}
|
|
if err := st.AppendContextManifest("alice", "conv-1", complete); err != nil {
|
|
t.Fatalf("complete source identities rejected: %v", err)
|
|
}
|
|
}
|