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  }