Add evidence context policy preparation
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package pipeline
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/notarius/internal/core/source"
|
||||
"gitea.maximumdirect.net/eric/notarius/internal/framework/contracts"
|
||||
)
|
||||
|
||||
func TestArtifactEvidenceRegistryProjectsExactRegisteredTypesWithOwnedReferences(t *testing.T) {
|
||||
registry := NewArtifactEvidenceRegistry()
|
||||
input := codecNotes{Items: []string{"one"}}
|
||||
refs := []source.SourceRef{{SourceID: "source", StartUnitID: 2, EndUnitID: 2}}
|
||||
if err := RegisterArtifactEvidence(registry, "test/notes", func(codecNotes) []source.SourceRef { return refs }); err != nil {
|
||||
t.Fatalf("RegisterArtifactEvidence() error = %v, want nil", err)
|
||||
}
|
||||
if err := RegisterArtifactEvidence(registry, "test/score", func(codecScore) []source.SourceRef { return nil }); err != nil {
|
||||
t.Fatalf("RegisterArtifactEvidence() second kind error = %v, want nil", err)
|
||||
}
|
||||
if got, want := registry.RegisteredKinds(), []contracts.ArtifactKind{"test/notes", "test/score"}; !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("RegisteredKinds() = %#v, want %#v", got, want)
|
||||
}
|
||||
projected, err := registry.Project(" test/notes ", input)
|
||||
if err != nil {
|
||||
t.Fatalf("Project() error = %v, want nil", err)
|
||||
}
|
||||
projected[0].StartUnitID = 99
|
||||
if refs[0].StartUnitID != 2 {
|
||||
t.Fatal("Project() retained projector reference storage")
|
||||
}
|
||||
if _, err := registry.Project("test/notes", codecNotesAlias(input)); err == nil || !strings.Contains(err.Error(), "expected exact Go type") {
|
||||
t.Fatalf("Project() exact type error = %v, want exact type failure", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestArtifactEvidenceRegistryRejectsInvalidRegistration(t *testing.T) {
|
||||
registry := NewArtifactEvidenceRegistry()
|
||||
if err := RegisterArtifactEvidence[codecNotes](nil, "test/notes", func(codecNotes) []source.SourceRef { return nil }); err == nil || !strings.Contains(err.Error(), "must not be nil") {
|
||||
t.Fatalf("nil registry error = %v, want failure", err)
|
||||
}
|
||||
if err := RegisterArtifactEvidence(registry, " ", func(codecNotes) []source.SourceRef { return nil }); err == nil || !strings.Contains(err.Error(), "must not be empty") {
|
||||
t.Fatalf("blank kind error = %v, want failure", err)
|
||||
}
|
||||
if err := RegisterArtifactEvidence(registry, "test/notes", ArtifactEvidenceProjector[codecNotes](nil)); err == nil || !strings.Contains(err.Error(), "must not be nil") {
|
||||
t.Fatalf("nil projector error = %v, want failure", err)
|
||||
}
|
||||
if err := RegisterArtifactEvidence(registry, "test/notes", func(codecNotes) []source.SourceRef { return nil }); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := RegisterArtifactEvidence(registry, "test/notes", func(codecNotes) []source.SourceRef { return nil }); err == nil || !strings.Contains(err.Error(), "already registered") {
|
||||
t.Fatalf("duplicate kind error = %v, want failure", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user