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") } }