Files
notarius/internal/framework/prompt/registry_test.go

88 lines
2.4 KiB
Go

package prompt
import (
"sort"
"strings"
"testing"
)
func TestLookupMetadataSucceedsForGenericPrompt(t *testing.T) {
metadata, ok := LookupMetadata(TestGenericPromptID)
if !ok {
t.Fatalf("expected metadata for %q", TestGenericPromptID)
}
if metadata.PromptID != TestGenericPromptID {
t.Fatalf("unexpected prompt ID: %q", metadata.PromptID)
}
if metadata.PromptVersion != VersionV1 {
t.Fatalf("unexpected prompt version: %q", metadata.PromptVersion)
}
if metadata.PromptSource != SourceBuiltin {
t.Fatalf("unexpected prompt source: %q", metadata.PromptSource)
}
if metadata.EmbeddedPath != "assets/test/generic" {
t.Fatalf("unexpected embedded path: %q", metadata.EmbeddedPath)
}
if !strings.HasPrefix(metadata.SHA256, "sha256:") {
t.Fatalf("expected prefixed hash, got %q", metadata.SHA256)
}
}
func TestLookupMetadataUnknownReturnsFalse(t *testing.T) {
if metadata, ok := LookupMetadata("unknown"); ok {
t.Fatalf("expected unknown prompt lookup to fail, got %+v", metadata)
}
}
func TestMustLookupMetadataPanicsForUnknownPromptID(t *testing.T) {
defer func() {
if recover() == nil {
t.Fatalf("expected panic")
}
}()
_ = MustLookupMetadata("unknown")
}
func TestRegisteredMetadataSortedByPromptID(t *testing.T) {
registered := RegisteredMetadata()
if len(registered) != 1 {
t.Fatalf("expected one registered prompt, got %d", len(registered))
}
ids := make([]string, len(registered))
for i, metadata := range registered {
ids[i] = metadata.PromptID
}
if !sort.StringsAreSorted(ids) {
t.Fatalf("expected sorted prompt IDs, got %v", ids)
}
}
func TestHardeningTextAvailable(t *testing.T) {
hardening := strings.TrimSpace(HardeningText())
if hardening == "" {
t.Fatalf("expected hardening text")
}
if !strings.Contains(hardening, "source text") {
t.Fatalf("unexpected hardening text: %q", hardening)
}
}
func TestMetadataDiagnosticsMapOmitsRenderedPromptText(t *testing.T) {
metadata := MustLookupMetadata(TestGenericPromptID)
diagnostics := metadata.DiagnosticsMap()
for _, key := range []string{"prompt_id", "prompt_version", "prompt_source", "embedded_path", "sha256"} {
if diagnostics[key] == "" {
t.Fatalf("expected diagnostics key %q, got %#v", key, diagnostics)
}
}
for _, key := range []string{"system", "user", "text", "rendered"} {
if _, ok := diagnostics[key]; ok {
t.Fatalf("diagnostics should omit rendered prompt text: %#v", diagnostics)
}
}
}