package home import ( "chain/runtime" "encoding/base64" "net/url" "strconv" "strings" "testing" "gno.land/p/nt/avl/v0" "gno.land/p/nt/testutils/v0" "gno.land/p/nt/uassert/v0" ) // A guess arrives in the page link, so anyone can write one: none of it may // reach the rendered markdown. func TestGuessIsNeverEchoed(t *testing.T) { setDay(launchDay) uassert.True(t, strings.Contains(Render("wordle/1?guess=abc"), "> That guess is not five letters, A to Z.")) for _, guess := range []string{ "[claim your reward](https://evil.example)", "x\n\n# OFFICIAL NOTICE", "![](https://evil.example/pixel.png)", ``, } { // Any rejected guess renders the very page a harmless rejected one does. page := Render("wordle/1?guess=" + url.QueryEscape(guess)) uassert.Equal(t, Render("wordle/1?guess=abc"), page, "guess leaked into the page: "+guess) } } func TestOnlyAdminWrites(cur realm, t *testing.T) { for _, caller := range []runtime.Realm{ testing.NewUserRealm(testutils.TestAddress("mallory")), testing.NewCodeRealm("gno.land/r/evil/relay"), } { testing.SetRealm(caller) uassert.AbortsWithMessage(t, cur, "unauthorized", func() { Set(cross(cur), "header", "pwned") }) uassert.AbortsWithMessage(t, cur, "unauthorized", func() { Delete(cross(cur), "header") }) } uassert.False(t, strings.Contains(Render(""), "pwned")) } func TestChartTextIsEscaped(cur realm, t *testing.T) { testing.SetRealm(testing.NewUserRealm(admin)) old := Get(reviewActivitySlot) Set(cross(cur), reviewActivitySlot, `title reviews; series ,a&b; 2026-01 1 2`) out := renderChart(reviewActivitySlot) raw, err := base64.StdEncoding.DecodeString(out[strings.Index(out, "base64,")+7 : len(out)-2]) uassert.NoError(t, err) uassert.False(t, strings.Contains(string(raw), "