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