diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2024-12-05 23:39:50 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-06 07:39:50 +0000 |
commit | b32f0cdfa05c3a0e34425e1b8a5dfa8b63914a01 (patch) | |
tree | 83493335cdb5570c3fe355242ad13afd3d2e3d84 /tests/integration/wiki_test.go | |
parent | 0f18046df4a9560351fcd8a7d9c9a80adf10efc2 (diff) | |
download | gitea-b32f0cdfa05c3a0e34425e1b8a5dfa8b63914a01.tar.gz gitea-b32f0cdfa05c3a0e34425e1b8a5dfa8b63914a01.zip |
Make wiki pages visit fast (#32732)
Diffstat (limited to 'tests/integration/wiki_test.go')
-rw-r--r-- | tests/integration/wiki_test.go | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/integration/wiki_test.go b/tests/integration/wiki_test.go new file mode 100644 index 0000000000..bb73f71a45 --- /dev/null +++ b/tests/integration/wiki_test.go @@ -0,0 +1,75 @@ +// Copyright 2021 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package integration + +import ( + "context" + "fmt" + "net/http" + "net/url" + "os" + "path/filepath" + "strings" + "testing" + + "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/util" + "code.gitea.io/gitea/tests" + + "github.com/PuerkitoBio/goquery" + "github.com/stretchr/testify/assert" +) + +func assertFileExist(t *testing.T, p string) { + exist, err := util.IsExist(p) + assert.NoError(t, err) + assert.True(t, exist) +} + +func assertFileEqual(t *testing.T, p string, content []byte) { + bs, err := os.ReadFile(p) + assert.NoError(t, err) + assert.EqualValues(t, content, bs) +} + +func TestRepoCloneWiki(t *testing.T) { + onGiteaRun(t, func(t *testing.T, u *url.URL) { + defer tests.PrepareTestEnv(t)() + + dstPath := t.TempDir() + + r := fmt.Sprintf("%suser2/repo1.wiki.git", u.String()) + u, _ = url.Parse(r) + u.User = url.UserPassword("user2", userPassword) + t.Run("Clone", func(t *testing.T) { + assert.NoError(t, git.CloneWithArgs(context.Background(), git.AllowLFSFiltersArgs(), u.String(), dstPath, git.CloneRepoOptions{})) + assertFileEqual(t, filepath.Join(dstPath, "Home.md"), []byte("# Home page\n\nThis is the home page!\n")) + assertFileExist(t, filepath.Join(dstPath, "Page-With-Image.md")) + assertFileExist(t, filepath.Join(dstPath, "Page-With-Spaced-Name.md")) + assertFileExist(t, filepath.Join(dstPath, "images")) + assertFileExist(t, filepath.Join(dstPath, "files/Non-Renderable-File.zip")) + assertFileExist(t, filepath.Join(dstPath, "jpeg.jpg")) + }) + }) +} + +func Test_RepoWikiPages(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + url := "/user2/repo1/wiki/?action=_pages" + req := NewRequest(t, "GET", url) + resp := MakeRequest(t, req, http.StatusOK) + + doc := NewHTMLParser(t, resp.Body) + expectedPagePaths := []string{ + "Home", "Page-With-Image", "Page-With-Spaced-Name", "Unescaped-File", + } + doc.Find("tr").Each(func(i int, s *goquery.Selection) { + firstAnchor := s.Find("a").First() + href, _ := firstAnchor.Attr("href") + pagePath := strings.TrimPrefix(href, "/user2/repo1/wiki/") + + assert.EqualValues(t, expectedPagePaths[i], pagePath) + }) +} |