32 lines
761 B
Go
32 lines
761 B
Go
package handler
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"unicode/utf8"
|
|
)
|
|
|
|
func TestSanitizePageURL(t *testing.T) {
|
|
got := sanitizePageURL("https://shop.example.com/p/1?token=secret&ok=1#hash")
|
|
if got == "" || strings.Contains(got, "token=") || strings.Contains(got, "#") {
|
|
t.Fatalf("sanitize failed: %q", got)
|
|
}
|
|
if !strings.Contains(got, "ok=1") {
|
|
t.Fatalf("should keep ok param: %q", got)
|
|
}
|
|
if sanitizePageURL("javascript:alert(1)") != "" {
|
|
t.Fatal("reject javascript")
|
|
}
|
|
if sanitizePageURL("") != "" {
|
|
t.Fatal("empty")
|
|
}
|
|
}
|
|
|
|
func TestSanitizePageTitle(t *testing.T) {
|
|
long := strings.Repeat("测", 300)
|
|
got := sanitizePageTitle(long)
|
|
if utf8.RuneCountInString(got) != maxPageTitleLen {
|
|
t.Fatalf("title len %d", utf8.RuneCountInString(got))
|
|
}
|
|
}
|