aboutsummaryrefslogtreecommitdiffstats
path: root/routers/common/errpage_test.go
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-05-29 23:00:21 +0800
committerGitHub <noreply@github.com>2023-05-29 15:00:21 +0000
commitca5f3028763f82dfe2491d3e408afbc369ec2a73 (patch)
treea69d1f87de57b7e92d017ed88d22b595094f5325 /routers/common/errpage_test.go
parent73b57c29922a9f76ca061dfe7c118b6e923ee606 (diff)
downloadgitea-ca5f3028763f82dfe2491d3e408afbc369ec2a73.tar.gz
gitea-ca5f3028763f82dfe2491d3e408afbc369ec2a73.zip
Fix admin config page error, use tests to cover the admin config and 500 error page (#24965)
The admin config page has been broken for many many times, a little refactoring would make this page panic. So, add a test for it, and add another test to cover the 500 error page. Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'routers/common/errpage_test.go')
-rw-r--r--routers/common/errpage_test.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/routers/common/errpage_test.go b/routers/common/errpage_test.go
new file mode 100644
index 0000000000..ea9a9e745c
--- /dev/null
+++ b/routers/common/errpage_test.go
@@ -0,0 +1,41 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package common
+
+import (
+ "context"
+ "errors"
+ "net/http"
+ "net/http/httptest"
+ "net/url"
+ "path/filepath"
+ "testing"
+
+ "code.gitea.io/gitea/models/unittest"
+ "code.gitea.io/gitea/modules/test"
+ "code.gitea.io/gitea/modules/web/middleware"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestRenderPanicErrorPage(t *testing.T) {
+ w := httptest.NewRecorder()
+ req := &http.Request{URL: &url.URL{}}
+ req = req.WithContext(middleware.WithContextData(context.Background()))
+ RenderPanicErrorPage(w, req, errors.New("fake panic error (for test only)"))
+ respContent := w.Body.String()
+ assert.Contains(t, respContent, `class="page-content status-page-500"`)
+ assert.Contains(t, respContent, `</html>`)
+
+ // the 500 page doesn't have normal pages footer, it makes it easier to distinguish a normal page and a failed page.
+ // especially when a sub-template causes page error, the HTTP response code is still 200,
+ // the different "footer" is the only way to know whether a page is fully rendered without error.
+ assert.False(t, test.IsNormalPageCompleted(respContent))
+}
+
+func TestMain(m *testing.M) {
+ unittest.MainTest(m, &unittest.TestOptions{
+ GiteaRootPath: filepath.Join("..", ".."),
+ })
+}