diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-05-29 23:00:21 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-29 15:00:21 +0000 |
commit | ca5f3028763f82dfe2491d3e408afbc369ec2a73 (patch) | |
tree | a69d1f87de57b7e92d017ed88d22b595094f5325 /routers/common/errpage_test.go | |
parent | 73b57c29922a9f76ca061dfe7c118b6e923ee606 (diff) | |
download | gitea-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.go | 41 |
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("..", ".."), + }) +} |