package main import ( "net/http" "net/http/httptest" "strings" "testing" "github.com/go-chi/chi/v5" ) func TestNotFoundHandlerRendersPage(t *testing.T) { rec := httptest.NewRecorder() notFoundHandler(rec, httptest.NewRequest(http.MethodGet, "/no-such-page", nil)) if rec.Code != http.StatusNotFound { t.Fatalf("status = %d, want 404", rec.Code) } if ct := rec.Header().Get("Content-Type"); !strings.Contains(ct, "text/html") { t.Fatalf("Content-Type = %q, want text/html", ct) } if csp := rec.Header().Get("Content-Security-Policy"); !strings.Contains(csp, "default-src 'none'") || !strings.Contains(csp, "style-src 'self'") { t.Fatalf("Content-Security-Policy = %q, 應停用外部資源載入且樣式僅允許本站", csp) } body := rec.Body.String() for _, want := range []string{"404", "找不到頁面", `href="/login"`, `/static/css/main.css`} { if !strings.Contains(body, want) { t.Errorf("404 頁缺少 %s", want) } } if strings.Contains(body, "