Add Notarius configuration and extraction source policy
This commit is contained in:
@@ -17,6 +17,7 @@ func TestClassifySource(t *testing.T) {
|
||||
{name: "built in transcript", source: "narratio.transcript.final_trimmed", wantKind: SourceKindBuiltIn},
|
||||
{name: "built in bounds", source: "narratio.bounds.session", wantKind: SourceKindBuiltIn},
|
||||
{name: "configured artifact", source: "narratio.artifact.session_recap", wantKind: SourceKindConfiguredArtifact, wantKey: "session_recap"},
|
||||
{name: "extraction", source: "narratio.extraction.npc_registry", wantKind: SourceKindExtraction, wantKey: "npc_registry"},
|
||||
{name: "previous session configured", source: "narratio.previous_session.artifact.session_recap", wantKind: SourceKindPreviousArtifact, wantKey: "session_recap"},
|
||||
{name: "unsupported", source: "narratio.unknown", wantErrLike: "unsupported artifact source"},
|
||||
}
|
||||
@@ -56,6 +57,60 @@ func TestValidatePublishSource(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtractionSourcePolicy(t *testing.T) {
|
||||
if got := ExtractionSourceID(" npc_registry "); got != "narratio.extraction.npc_registry" {
|
||||
t.Fatalf("ExtractionSourceID() = %q, want narratio.extraction.npc_registry", got)
|
||||
}
|
||||
if key, ok := ParseExtractionSource(" narratio.extraction.npc_registry "); !ok || key != "npc_registry" {
|
||||
t.Fatalf("ParseExtractionSource() = %q, %t; want npc_registry, true", key, ok)
|
||||
}
|
||||
for _, source := range []string{
|
||||
"narratio.extraction.",
|
||||
"narratio.extraction.NPC",
|
||||
"narratio.extraction.npc-registry",
|
||||
"narratio.extraction.npc_registry.extra",
|
||||
} {
|
||||
if _, ok := ParseExtractionSource(source); ok {
|
||||
t.Fatalf("ParseExtractionSource(%q) unexpectedly matched", source)
|
||||
}
|
||||
}
|
||||
|
||||
descriptor, err := DescribeScriptoriumInputSource("narratio.extraction.npc_registry")
|
||||
if err != nil {
|
||||
t.Fatalf("DescribeScriptoriumInputSource(extraction) error = %v", err)
|
||||
}
|
||||
if descriptor.Source.Kind != SourceKindExtraction || descriptor.Source.ConfiguredKey != "npc_registry" {
|
||||
t.Fatalf("extraction descriptor = %#v", descriptor)
|
||||
}
|
||||
declared := map[string]struct{}{"npc_registry": {}}
|
||||
if err := ValidateInputReference(descriptor, nil, declared); err != nil {
|
||||
t.Fatalf("ValidateInputReference(declared extraction) error = %v", err)
|
||||
}
|
||||
if err := ValidateInputReference(descriptor, nil, nil); err == nil {
|
||||
t.Fatal("ValidateInputReference(unknown extraction) error = nil, want error")
|
||||
}
|
||||
|
||||
if _, err := ValidatePublishSourceWithExtractions("narratio.extraction.npc_registry", nil, declared); err != nil {
|
||||
t.Fatalf("ValidatePublishSourceWithExtractions(declared) error = %v", err)
|
||||
}
|
||||
if _, err := ValidatePublishSourceWithExtractions("narratio.extraction.unknown", nil, declared); err == nil {
|
||||
t.Fatal("ValidatePublishSourceWithExtractions(unknown) error = nil, want error")
|
||||
}
|
||||
|
||||
identities := map[string]struct{}{}
|
||||
for _, sourceID := range []string{
|
||||
ExtractionSourceID("npc_registry"),
|
||||
ConfiguredSourceID("npc_registry"),
|
||||
PreviousSessionSourceID("npc_registry"),
|
||||
SourceBoundsSession,
|
||||
} {
|
||||
if _, exists := identities[sourceID]; exists {
|
||||
t.Fatalf("source identity collision at %q", sourceID)
|
||||
}
|
||||
identities[sourceID] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolvePublishedDestination(t *testing.T) {
|
||||
configured := map[string]string{"session_recap": "artifacts/session_recap.md"}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user