Files
jiang13-bbs/backend/service/bg_test.go
freefire d784b0ea7a feat: 交付官方 Docker 运行时,外观改背景图并下线自定义 CSS/JS
站点/后台分轨背景与用户列表排序一并落地;生产 CORS 改走 SITE_URL,健康检查带版本号。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 05:27:33 +08:00

57 lines
1.6 KiB
Go

package service
import "testing"
func TestNormalizeBgURL(t *testing.T) {
okEmpty, ok := NormalizeBgURL(" ")
if !ok || okEmpty != "" {
t.Fatalf("empty should clear, got %q ok=%v", okEmpty, ok)
}
good := "/uploads/backgrounds/0123456789abcdef0123456789abcdef.webp"
got, ok := NormalizeBgURL(good)
if !ok || got != good {
t.Fatalf("want %s, got %q ok=%v", good, got, ok)
}
rejects := []string{
"http://evil.test/x.webp",
"/uploads/backgrounds/../avatars/x.webp",
"/uploads/images/0123456789abcdef0123456789abcdef.webp",
"/uploads/backgrounds/0123456789abcdef0123456789abcdef.gif",
`/uploads/backgrounds/0123456789abcdef0123456789abcdef.webp")`,
"/uploads/backgrounds/short.webp",
"javascript:alert(1)",
}
for _, u := range rejects {
if _, ok := NormalizeBgURL(u); ok {
t.Fatalf("should reject %q", u)
}
}
}
func TestNormalizeBgMode(t *testing.T) {
m, ok := NormalizeBgMode("")
if !ok || m != DefaultBgMode {
t.Fatalf("empty mode want cover, got %q ok=%v", m, ok)
}
if _, ok := NormalizeBgMode("zoom"); ok {
t.Fatal("unknown mode should fail")
}
for _, want := range []string{
BgModeCover, BgModeContain, BgModeRepeat, BgModeRepeatX, BgModeRepeatY, BgModeStretch, BgModeCenter,
} {
got, ok := NormalizeBgMode(" " + want + " ")
if !ok || got != want {
t.Fatalf("mode %s: got %q ok=%v", want, got, ok)
}
}
}
func TestNormalizeBgSurface(t *testing.T) {
if s, ok := NormalizeBgSurface("SITE"); !ok || s != BgSurfaceSite {
t.Fatalf("site: %q %v", s, ok)
}
if _, ok := NormalizeBgSurface("frontend"); ok {
t.Fatal("frontend is not a surface")
}
}