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) } } }