You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
2.8 KiB
129 lines
2.8 KiB
4 years ago
|
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||
|
// Copyright 2019 The Gitea Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a MIT-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
3 years ago
|
package auth
|
||
4 years ago
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"testing"
|
||
|
|
||
|
"code.gitea.io/gitea/modules/setting"
|
||
|
)
|
||
|
|
||
4 years ago
|
func Test_isGitRawOrLFSPath(t *testing.T) {
|
||
4 years ago
|
|
||
|
tests := []struct {
|
||
|
path string
|
||
|
|
||
|
want bool
|
||
|
}{
|
||
|
{
|
||
|
"/owner/repo/git-upload-pack",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/git-receive-pack",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/info/refs",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/HEAD",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/objects/info/alternates",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/objects/info/http-alternates",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/objects/info/packs",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/objects/info/blahahsdhsdkla",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/objects/01/23456789abcdef0123456789abcdef01234567",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/objects/pack/pack-123456789012345678921234567893124567894.pack",
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/objects/pack/pack-0123456789abcdef0123456789abcdef0123456.idx",
|
||
|
true,
|
||
|
},
|
||
4 years ago
|
{
|
||
|
"/owner/repo/raw/branch/foo/fanaso",
|
||
|
true,
|
||
|
},
|
||
4 years ago
|
{
|
||
|
"/owner/repo/stars",
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"/notowner",
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo",
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
"/owner/repo/commit/123456789012345678921234567893124567894",
|
||
|
false,
|
||
|
},
|
||
|
}
|
||
|
lfsTests := []string{
|
||
|
"/owner/repo/info/lfs/",
|
||
|
"/owner/repo/info/lfs/objects/batch",
|
||
|
"/owner/repo/info/lfs/objects/oid/filename",
|
||
|
"/owner/repo/info/lfs/objects/oid",
|
||
|
"/owner/repo/info/lfs/objects",
|
||
|
"/owner/repo/info/lfs/verify",
|
||
|
"/owner/repo/info/lfs/locks",
|
||
|
"/owner/repo/info/lfs/locks/verify",
|
||
|
"/owner/repo/info/lfs/locks/123/unlock",
|
||
|
}
|
||
|
|
||
|
origLFSStartServer := setting.LFS.StartServer
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.path, func(t *testing.T) {
|
||
|
req, _ := http.NewRequest("POST", "http://localhost"+tt.path, nil)
|
||
|
setting.LFS.StartServer = false
|
||
4 years ago
|
if got := isGitRawOrLFSPath(req); got != tt.want {
|
||
4 years ago
|
t.Errorf("isGitOrLFSPath() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
setting.LFS.StartServer = true
|
||
4 years ago
|
if got := isGitRawOrLFSPath(req); got != tt.want {
|
||
4 years ago
|
t.Errorf("isGitOrLFSPath() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
for _, tt := range lfsTests {
|
||
|
t.Run(tt, func(t *testing.T) {
|
||
|
req, _ := http.NewRequest("POST", tt, nil)
|
||
|
setting.LFS.StartServer = false
|
||
4 years ago
|
if got := isGitRawOrLFSPath(req); got != setting.LFS.StartServer {
|
||
|
t.Errorf("isGitOrLFSPath(%q) = %v, want %v, %v", tt, got, setting.LFS.StartServer, gitRawPathRe.MatchString(tt))
|
||
4 years ago
|
}
|
||
|
setting.LFS.StartServer = true
|
||
4 years ago
|
if got := isGitRawOrLFSPath(req); got != setting.LFS.StartServer {
|
||
4 years ago
|
t.Errorf("isGitOrLFSPath(%q) = %v, want %v", tt, got, setting.LFS.StartServer)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
setting.LFS.StartServer = origLFSStartServer
|
||
|
}
|