package webapp
import (
"strings"
"testing"
"testing/fstest"
)
func TestRenderShellInjectsBootPayloadBeforeHeadClose(t *testing.T) {
t.Parallel()
assets := fstest.MapFS{
"index.html": {
Data: []byte("
Kandev"),
},
}
payload := NewBootPayload(
ClassifyRoute("/t/task-1"),
RuntimeConfig{APIPrefix: "/api/v1", WebSocketPath: "/ws"},
map[string]any{"title": "Task"},
)
html, err := RenderShell(assets, "index.html", payload)
if err != nil {
t.Fatalf("RenderShell: %v", err)
}
got := string(html)
scriptIdx := strings.Index(got, bootPayloadGlobal)
headCloseIdx := strings.Index(got, "")
if scriptIdx < 0 {
t.Fatalf("rendered shell missing boot payload script: %s", got)
}
if headCloseIdx < 0 || scriptIdx > headCloseIdx {
t.Fatalf("boot payload script should be injected before : %s", got)
}
if !strings.Contains(got, `"taskId":"task-1"`) {
t.Fatalf("rendered shell missing route params: %s", got)
}
}
func TestBootPayloadScriptEscapesScriptTerminators(t *testing.T) {
t.Parallel()
payload := NewBootPayload(
ClassifyRoute("/"),
RuntimeConfig{},
map[string]any{"title": ""},
)
script, err := BootPayloadScript(payload)
if err != nil {
t.Fatalf("BootPayloadScript: %v", err)
}
if strings.Contains(string(script), "