forked from forgejo/forgejo
Move context from modules to services (#29440)
Since `modules/context` has to depend on `models` and many other packages, it should be moved from `modules/context` to `services/context` according to design principles. There is no logic code change on this PR, only move packages. - Move `code.gitea.io/gitea/modules/context` to `code.gitea.io/gitea/services/context` - Move `code.gitea.io/gitea/modules/contexttest` to `code.gitea.io/gitea/services/contexttest` because of depending on context - Move `code.gitea.io/gitea/modules/upload` to `code.gitea.io/gitea/services/context/upload` because of depending on context (cherry picked from commit 29f149bd9f517225a3c9f1ca3fb0a7b5325af696) Conflicts: routers/api/packages/alpine/alpine.go routers/api/v1/repo/issue_reaction.go routers/install/install.go routers/web/admin/config.go routers/web/passkey.go routers/web/repo/search.go routers/web/repo/setting/default_branch.go routers/web/user/home.go routers/web/user/profile.go tests/integration/editor_test.go tests/integration/integration_test.go tests/integration/mirror_push_test.go trivial context conflicts also modified all other occurrences in Forgejo specific files
This commit is contained in:
parent
75f7be2aac
commit
894d9b2836
373 changed files with 384 additions and 390 deletions
194
services/context/upload/upload_test.go
Normal file
194
services/context/upload/upload_test.go
Normal file
|
@ -0,0 +1,194 @@
|
|||
// Copyright 2019 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package upload
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"compress/gzip"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestUpload(t *testing.T) {
|
||||
testContent := []byte(`This is a plain text file.`)
|
||||
var b bytes.Buffer
|
||||
w := gzip.NewWriter(&b)
|
||||
w.Write(testContent)
|
||||
w.Close()
|
||||
|
||||
kases := []struct {
|
||||
data []byte
|
||||
fileName string
|
||||
allowedTypes string
|
||||
err error
|
||||
}{
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "dir/test.txt",
|
||||
allowedTypes: "",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "../../../test.txt",
|
||||
allowedTypes: "",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: ",",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "|",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "*/*",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "*/*,",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "*/*|",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "text/plain",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "dir/test.txt",
|
||||
allowedTypes: "text/plain",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "/dir.txt/test.js",
|
||||
allowedTypes: ".js",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: " text/plain ",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: ".txt",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: " .txt,.js",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: " .txt|.js",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "../../test.txt",
|
||||
allowedTypes: " .txt|.js",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: " .txt ,.js ",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "text/plain, .txt",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "text/*",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "text/*,.js",
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "text/**",
|
||||
err: ErrFileTypeForbidden{"text/plain; charset=utf-8"},
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "application/x-gzip",
|
||||
err: ErrFileTypeForbidden{"text/plain; charset=utf-8"},
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: ".zip",
|
||||
err: ErrFileTypeForbidden{"text/plain; charset=utf-8"},
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: ".zip,.txtx",
|
||||
err: ErrFileTypeForbidden{"text/plain; charset=utf-8"},
|
||||
},
|
||||
{
|
||||
data: testContent,
|
||||
fileName: "test.txt",
|
||||
allowedTypes: ".zip|.txtx",
|
||||
err: ErrFileTypeForbidden{"text/plain; charset=utf-8"},
|
||||
},
|
||||
{
|
||||
data: b.Bytes(),
|
||||
fileName: "test.txt",
|
||||
allowedTypes: "application/x-gzip",
|
||||
err: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, kase := range kases {
|
||||
assert.Equal(t, kase.err, Verify(kase.data, kase.fileName, kase.allowedTypes))
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue