code.gitea.io/gitea@v1.21.7/routers/web/repo/editor_test.go (about) 1 // Copyright 2018 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repo 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/unittest" 10 "code.gitea.io/gitea/modules/contexttest" 11 "code.gitea.io/gitea/modules/git" 12 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func TestCleanUploadName(t *testing.T) { 17 unittest.PrepareTestEnv(t) 18 19 kases := map[string]string{ 20 ".git/refs/master": "", 21 "/root/abc": "root/abc", 22 "./../../abc": "abc", 23 "a/../.git": "", 24 "a/../../../abc": "abc", 25 "../../../acd": "acd", 26 "../../.git/abc": "", 27 "..\\..\\.git/abc": "..\\..\\.git/abc", 28 "..\\../.git/abc": "", 29 "..\\../.git": "", 30 "abc/../def": "def", 31 ".drone.yml": ".drone.yml", 32 ".abc/def/.drone.yml": ".abc/def/.drone.yml", 33 "..drone.yml.": "..drone.yml.", 34 "..a.dotty...name...": "..a.dotty...name...", 35 "..a.dotty../.folder../.name...": "..a.dotty../.folder../.name...", 36 } 37 for k, v := range kases { 38 assert.EqualValues(t, cleanUploadFileName(k), v) 39 } 40 } 41 42 func TestGetUniquePatchBranchName(t *testing.T) { 43 unittest.PrepareTestEnv(t) 44 ctx, _ := contexttest.MockContext(t, "user2/repo1") 45 ctx.SetParams(":id", "1") 46 contexttest.LoadRepo(t, ctx, 1) 47 contexttest.LoadRepoCommit(t, ctx) 48 contexttest.LoadUser(t, ctx, 2) 49 contexttest.LoadGitRepo(t, ctx) 50 defer ctx.Repo.GitRepo.Close() 51 52 expectedBranchName := "user2-patch-1" 53 branchName := GetUniquePatchBranchName(ctx) 54 assert.Equal(t, expectedBranchName, branchName) 55 } 56 57 func TestGetClosestParentWithFiles(t *testing.T) { 58 unittest.PrepareTestEnv(t) 59 ctx, _ := contexttest.MockContext(t, "user2/repo1") 60 ctx.SetParams(":id", "1") 61 contexttest.LoadRepo(t, ctx, 1) 62 contexttest.LoadRepoCommit(t, ctx) 63 contexttest.LoadUser(t, ctx, 2) 64 contexttest.LoadGitRepo(t, ctx) 65 defer ctx.Repo.GitRepo.Close() 66 67 repo := ctx.Repo.Repository 68 branch := repo.DefaultBranch 69 gitRepo, _ := git.OpenRepository(git.DefaultContext, repo.RepoPath()) 70 defer gitRepo.Close() 71 commit, _ := gitRepo.GetBranchCommit(branch) 72 var expectedTreePath string // Should return the root dir, empty string, since there are no subdirs in this repo 73 for _, deletedFile := range []string{ 74 "dir1/dir2/dir3/file.txt", 75 "file.txt", 76 } { 77 treePath := GetClosestParentWithFiles(deletedFile, commit) 78 assert.Equal(t, expectedTreePath, treePath) 79 } 80 }