88 lines
2.4 KiB
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)
|
|
}
|
|
}
|
|
}
|