Test: util / filesystem
This commit is contained in:
parent
06bcb3d6eb
commit
5df8f688d1
8 changed files with 322 additions and 0 deletions
|
@ -168,6 +168,18 @@ func TestFileSystem_Use(t *testing.T) {
|
|||
|
||||
// 不存在
|
||||
fs.Use("BeforeUpload2333", hook)
|
||||
|
||||
asserts.NotPanics(func() {
|
||||
for _, hookName := range []string{
|
||||
"AfterUpload",
|
||||
"AfterValidateFailed",
|
||||
"AfterUploadCanceled",
|
||||
"BeforeFileDownload",
|
||||
} {
|
||||
fs.Use(hookName, hook)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func TestFileSystem_Trigger(t *testing.T) {
|
||||
|
@ -195,3 +207,50 @@ func TestFileSystem_Trigger(t *testing.T) {
|
|||
asserts.NoError(err)
|
||||
asserts.Equal(uint64(4), fs.User.Storage)
|
||||
}
|
||||
|
||||
func TestHookIsFileExist(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
fs := &FileSystem{User: &model.User{
|
||||
Model: gorm.Model{
|
||||
ID: 1,
|
||||
},
|
||||
}}
|
||||
ctx := context.WithValue(context.Background(), PathCtx, "/test.txt")
|
||||
{
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/", "test.txt").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"Name"}).AddRow("s"),
|
||||
)
|
||||
err := HookIsFileExist(ctx, fs)
|
||||
asserts.NoError(mock.ExpectationsWereMet())
|
||||
asserts.NoError(err)
|
||||
}
|
||||
{
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/", "test.txt").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"Name"}),
|
||||
)
|
||||
err := HookIsFileExist(ctx, fs)
|
||||
asserts.NoError(mock.ExpectationsWereMet())
|
||||
asserts.Error(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestHookValidateCapacity(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
fs := &FileSystem{User: &model.User{
|
||||
Model: gorm.Model{ID: 1},
|
||||
Storage: 0,
|
||||
Group: model.Group{
|
||||
MaxStorage: 11,
|
||||
},
|
||||
}}
|
||||
ctx := context.WithValue(context.Background(), FileHeaderCtx, local.FileStream{Size: 10})
|
||||
{
|
||||
err := HookValidateCapacity(ctx, fs)
|
||||
asserts.NoError(err)
|
||||
}
|
||||
{
|
||||
err := HookValidateCapacity(ctx, fs)
|
||||
asserts.Error(err)
|
||||
}
|
||||
}
|
||||
|
|
48
pkg/filesystem/local/file_test.go
Normal file
48
pkg/filesystem/local/file_test.go
Normal file
|
@ -0,0 +1,48 @@
|
|||
package local
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFileStream_GetFileName(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
file := FileStream{Name: "123"}
|
||||
asserts.Equal("123", file.GetFileName())
|
||||
}
|
||||
|
||||
func TestFileStream_GetMIMEType(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
file := FileStream{MIMEType: "123"}
|
||||
asserts.Equal("123", file.GetFileName())
|
||||
}
|
||||
|
||||
func TestFileStream_GetSize(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
file := FileStream{Size: 123}
|
||||
asserts.Equal(uint64(123), file.GetSize())
|
||||
}
|
||||
|
||||
func TestFileStream_Read(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
file := FileStream{
|
||||
File: ioutil.NopCloser(strings.NewReader("123")),
|
||||
}
|
||||
var p = make([]byte, 3)
|
||||
{
|
||||
n, err := file.Read(p)
|
||||
asserts.Equal(3, n)
|
||||
asserts.NoError(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFileStream_Close(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
file := FileStream{
|
||||
File: ioutil.NopCloser(strings.NewReader("123")),
|
||||
}
|
||||
err := file.Close()
|
||||
asserts.NoError(err)
|
||||
}
|
|
@ -368,3 +368,78 @@ func TestFileSystem_Delete(t *testing.T) {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
func TestFileSystem_Copy(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
fs := &FileSystem{User: &model.User{
|
||||
Model: gorm.Model{
|
||||
ID: 1,
|
||||
},
|
||||
Storage: 3,
|
||||
Group: model.Group{MaxStorage: 3},
|
||||
}}
|
||||
ctx := context.Background()
|
||||
|
||||
// 目录不存在
|
||||
{
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/dst").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}),
|
||||
)
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/src").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}),
|
||||
)
|
||||
err := fs.Copy(ctx, []string{}, []string{}, "/src", "/dst")
|
||||
asserts.Equal(ErrPathNotExist, err)
|
||||
asserts.NoError(mock.ExpectationsWereMet())
|
||||
}
|
||||
|
||||
// 复制目录出错
|
||||
{
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/src").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}).AddRow("123"),
|
||||
)
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/dst").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}).AddRow("123"),
|
||||
)
|
||||
err := fs.Copy(ctx, []string{"test"}, []string{}, "/src", "/dst")
|
||||
asserts.Error(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestFileSystem_Move(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
fs := &FileSystem{User: &model.User{
|
||||
Model: gorm.Model{
|
||||
ID: 1,
|
||||
},
|
||||
Storage: 3,
|
||||
Group: model.Group{MaxStorage: 3},
|
||||
}}
|
||||
ctx := context.Background()
|
||||
|
||||
// 目录不存在
|
||||
{
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/dst").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}),
|
||||
)
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/src").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}),
|
||||
)
|
||||
err := fs.Move(ctx, []string{}, []string{}, "/src", "/dst")
|
||||
asserts.Equal(ErrPathNotExist, err)
|
||||
asserts.NoError(mock.ExpectationsWereMet())
|
||||
}
|
||||
|
||||
// 移动目录出错
|
||||
{
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/src").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}).AddRow("123"),
|
||||
)
|
||||
mock.ExpectQuery("SELECT(.+)").WithArgs(uint(1), "/dst").WillReturnRows(
|
||||
sqlmock.NewRows([]string{"name"}).AddRow("123"),
|
||||
)
|
||||
err := fs.Move(ctx, []string{"test"}, []string{}, "/src", "/dst")
|
||||
asserts.Error(err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,4 +82,18 @@ func TestFileSystem_Upload(t *testing.T) {
|
|||
asserts.Error(err)
|
||||
testHandller2.AssertExpectations(t)
|
||||
|
||||
// AfterUpload失败
|
||||
testHandller3 := new(FileHeaderMock)
|
||||
testHandller3.On("Put", testMock.Anything, testMock.Anything, testMock.Anything).Return(nil)
|
||||
fs.Handler = testHandller3
|
||||
fs.Use("AfterUpload", func(ctx context.Context, fs *FileSystem) error {
|
||||
return errors.New("error")
|
||||
})
|
||||
fs.Use("AfterValidateFailed", func(ctx context.Context, fs *FileSystem) error {
|
||||
return errors.New("error")
|
||||
})
|
||||
err = fs.Upload(ctx, file)
|
||||
asserts.Error(err)
|
||||
testHandller2.AssertExpectations(t)
|
||||
|
||||
}
|
||||
|
|
|
@ -62,3 +62,9 @@ func TestBuildRegexp(t *testing.T) {
|
|||
asserts.Equal("^/dir/", BuildRegexp([]string{"/dir"}, "^", "/", "|"))
|
||||
asserts.Equal("^/dir/|^/dir/di\\*r/", BuildRegexp([]string{"/dir", "/dir/di*r"}, "^", "/", "|"))
|
||||
}
|
||||
|
||||
func TestBuildConcat(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
asserts.Equal("CONCAT(1,2)", BuildConcat("1", "2", "mysql"))
|
||||
asserts.Equal("1||2", BuildConcat("1", "2", "sqlite3"))
|
||||
}
|
||||
|
|
12
pkg/util/io_test.go
Normal file
12
pkg/util/io_test.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestExists(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
asserts.True(Exists("io_test.go"))
|
||||
asserts.False(Exists("io_test.js"))
|
||||
}
|
101
pkg/util/logger_test.go
Normal file
101
pkg/util/logger_test.go
Normal file
|
@ -0,0 +1,101 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBuildLogger(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
asserts.NotPanics(func() {
|
||||
BuildLogger("error")
|
||||
})
|
||||
asserts.NotPanics(func() {
|
||||
BuildLogger("warning")
|
||||
})
|
||||
asserts.NotPanics(func() {
|
||||
BuildLogger("info")
|
||||
})
|
||||
asserts.NotPanics(func() {
|
||||
BuildLogger("?")
|
||||
})
|
||||
asserts.NotPanics(func() {
|
||||
BuildLogger("debug")
|
||||
})
|
||||
}
|
||||
|
||||
func TestLog(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
asserts.NotNil(Log())
|
||||
logger = nil
|
||||
asserts.NotNil(Log())
|
||||
}
|
||||
|
||||
func TestLogger_Debug(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
l := Logger{
|
||||
level: LevelDebug,
|
||||
}
|
||||
asserts.NotPanics(func() {
|
||||
l.Debug("123")
|
||||
})
|
||||
l.level = LevelError
|
||||
asserts.NotPanics(func() {
|
||||
l.Debug("123")
|
||||
})
|
||||
}
|
||||
|
||||
func TestLogger_Info(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
l := Logger{
|
||||
level: LevelDebug,
|
||||
}
|
||||
asserts.NotPanics(func() {
|
||||
l.Info("123")
|
||||
})
|
||||
l.level = LevelError
|
||||
asserts.NotPanics(func() {
|
||||
l.Info("123")
|
||||
})
|
||||
}
|
||||
func TestLogger_Warning(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
l := Logger{
|
||||
level: LevelDebug,
|
||||
}
|
||||
asserts.NotPanics(func() {
|
||||
l.Warning("123")
|
||||
})
|
||||
l.level = LevelError
|
||||
asserts.NotPanics(func() {
|
||||
l.Warning("123")
|
||||
})
|
||||
}
|
||||
|
||||
func TestLogger_Error(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
l := Logger{
|
||||
level: LevelDebug,
|
||||
}
|
||||
asserts.NotPanics(func() {
|
||||
l.Error("123")
|
||||
})
|
||||
l.level = -1
|
||||
asserts.NotPanics(func() {
|
||||
l.Error("123")
|
||||
})
|
||||
}
|
||||
|
||||
func TestLogger_Panic(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
l := Logger{
|
||||
level: LevelDebug,
|
||||
}
|
||||
asserts.Panics(func() {
|
||||
l.Panic("123")
|
||||
})
|
||||
l.level = -1
|
||||
asserts.NotPanics(func() {
|
||||
l.Error("123")
|
||||
})
|
||||
}
|
|
@ -12,3 +12,10 @@ func TestDotPathToStandardPath(t *testing.T) {
|
|||
asserts.Equal("/目录", DotPathToStandardPath("目录"))
|
||||
asserts.Equal("/目录/目录2", DotPathToStandardPath("目录,目录2"))
|
||||
}
|
||||
|
||||
func TestFillSlash(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
asserts.Equal("/", FillSlash("/"))
|
||||
asserts.Equal("/", FillSlash(""))
|
||||
asserts.Equal("/123/", FillSlash("/123"))
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue