markdown_fallback_test.go

 1package clib
 2
 3import (
 4	"strings"
 5	"testing"
 6)
 7
 8func TestMarkdownPlainTextHTMLFallbackEscapesInput(t *testing.T) {
 9	input := []byte("# Heading\n\n<script>alert(\"x\")</script>\n<b>literal</b>")
10
11	got := string(markdownPlainTextHTML(input))
12
13	if !strings.HasPrefix(got, "<pre>") || !strings.HasSuffix(got, "</pre>") {
14		t.Fatalf("fallback should wrap content in pre tag, got %q", got)
15	}
16	if strings.Contains(got, "<script>") || strings.Contains(got, "<b>") {
17		t.Fatalf("fallback should escape HTML-looking input, got %q", got)
18	}
19	if !strings.Contains(got, "&lt;script&gt;alert(&#34;x&#34;)&lt;/script&gt;") {
20		t.Fatalf("fallback missing escaped script text, got %q", got)
21	}
22	if !strings.Contains(got, "# Heading") {
23		t.Fatalf("fallback should preserve markdown text, got %q", got)
24	}
25}