Cloudreve/pkg/filesystem/hooks_test.go

94 lines
2.2 KiB
Go

package filesystem
import (
"context"
model "github.com/HFO4/cloudreve/models"
"github.com/HFO4/cloudreve/pkg/filesystem/local"
"github.com/stretchr/testify/assert"
"os"
"testing"
)
func TestGenericBeforeUpload(t *testing.T) {
asserts := assert.New(t)
file := local.FileData{
Size: 5,
Name: "1.txt",
}
ctx := context.WithValue(context.Background(), FileHeaderCtx, file)
fs := FileSystem{
User: &model.User{
Storage: 0,
Group: model.Group{
MaxStorage: 11,
},
Policy: model.Policy{
MaxSize: 4,
OptionsSerialized: model.PolicyOption{
FileType: []string{"txt"},
},
},
},
}
asserts.Error(GenericBeforeUpload(ctx, &fs))
file.Size = 1
file.Name = "1"
ctx = context.WithValue(context.Background(), FileHeaderCtx, file)
asserts.Error(GenericBeforeUpload(ctx, &fs))
file.Name = "1.txt"
ctx = context.WithValue(context.Background(), FileHeaderCtx, file)
asserts.NoError(GenericBeforeUpload(ctx, &fs))
file.Name = "1.t/xt"
ctx = context.WithValue(context.Background(), FileHeaderCtx, file)
asserts.Error(GenericBeforeUpload(ctx, &fs))
}
func TestGenericAfterUploadCanceled(t *testing.T) {
asserts := assert.New(t)
f, err := os.Create("TestGenericAfterUploadCanceled")
asserts.NoError(err)
f.Close()
file := local.FileStream{
Size: 5,
Name: "TestGenericAfterUploadCanceled",
}
ctx := context.WithValue(context.Background(), SavePathCtx, "TestGenericAfterUploadCanceled")
ctx = context.WithValue(ctx, FileHeaderCtx, file)
fs := FileSystem{
User: &model.User{Storage: 5},
Handler: local.Handler{},
}
// 成功
err = GenericAfterUploadCanceled(ctx, &fs)
asserts.NoError(err)
asserts.Equal(uint64(0), fs.User.Storage)
f, err = os.Create("TestGenericAfterUploadCanceled")
asserts.NoError(err)
f.Close()
// 容量不能再降低
err = GenericAfterUploadCanceled(ctx, &fs)
asserts.Error(err)
//文件不存在
fs.User.Storage = 5
err = GenericAfterUploadCanceled(ctx, &fs)
asserts.NoError(err)
}
//func TestGenericAfterUpload(t *testing.T) {
// asserts := assert.New(t)
// testObj := FileSystem{}
// ctx := context.WithValue(context.Background(),FileHeaderCtx,local.FileStream{
// VirtualPath: "/我的文件",
// Name: "test.txt",
// })
//
//
//}