feat: 交付官方 Docker 运行时,外观改背景图并下线自定义 CSS/JS
站点/后台分轨背景与用户列表排序一并落地;生产 CORS 改走 SITE_URL,健康检查带版本号。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
56
backend/service/bg_test.go
Normal file
56
backend/service/bg_test.go
Normal file
@@ -0,0 +1,56 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user