mirror of https://github.com/cloudreve/Cloudreve
Test: new changes in model pkg
parent
a568e5e45a
commit
1821923b74
|
@ -15,22 +15,62 @@ func TestFile_Create(t *testing.T) {
|
||||||
Name: "123",
|
Name: "123",
|
||||||
}
|
}
|
||||||
|
|
||||||
mock.ExpectBegin()
|
// 无法插入文件记录
|
||||||
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(5, 1))
|
{
|
||||||
mock.ExpectCommit()
|
|
||||||
fileID, err := file.Create()
|
|
||||||
asserts.NoError(err)
|
|
||||||
asserts.Equal(uint(5), fileID)
|
|
||||||
asserts.Equal(uint(5), file.ID)
|
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
|
||||||
|
|
||||||
mock.ExpectBegin()
|
mock.ExpectBegin()
|
||||||
mock.ExpectExec("INSERT(.+)").WillReturnError(errors.New("error"))
|
mock.ExpectExec("INSERT(.+)").WillReturnError(errors.New("error"))
|
||||||
mock.ExpectRollback()
|
mock.ExpectRollback()
|
||||||
fileID, err = file.Create()
|
err := file.Create()
|
||||||
asserts.Error(err)
|
asserts.Error(err)
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 无法更新用户容量
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(5, 1))
|
||||||
|
mock.ExpectExec("UPDATE(.+)").WillReturnError(errors.New("error"))
|
||||||
|
mock.ExpectRollback()
|
||||||
|
err := file.Create()
|
||||||
|
asserts.Error(err)
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 成功
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(5, 1))
|
||||||
|
mock.ExpectExec("UPDATE(.+)storage(.+)").WillReturnResult(sqlmock.NewResult(0, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
err := file.Create()
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal(uint(5), file.ID)
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFile_AfterFind(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
file := File{
|
||||||
|
Name: "123",
|
||||||
|
Metadata: "{\"name\":\"123\"}",
|
||||||
|
}
|
||||||
|
|
||||||
|
a.NoError(file.AfterFind())
|
||||||
|
a.Equal("123", file.MetadataSerialized["name"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFile_BeforeSave(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
file := File{
|
||||||
|
Name: "123",
|
||||||
|
MetadataSerialized: map[string]string{
|
||||||
|
"name": "123",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
a.NoError(file.BeforeSave())
|
||||||
|
a.Equal("{\"name\":\"123\"}", file.Metadata)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFolder_GetChildFile(t *testing.T) {
|
func TestFolder_GetChildFile(t *testing.T) {
|
||||||
|
@ -175,6 +215,17 @@ func TestGetChildFilesOfFolders(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetUploadPlaceholderFiles(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
|
||||||
|
mock.ExpectQuery("SELECT(.+)upload_session_id(.+)").
|
||||||
|
WithArgs(1).
|
||||||
|
WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(1, "1"))
|
||||||
|
files := GetUploadPlaceholderFiles(1)
|
||||||
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
a.Len(files, 1)
|
||||||
|
}
|
||||||
|
|
||||||
func TestFile_GetPolicy(t *testing.T) {
|
func TestFile_GetPolicy(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
@ -282,28 +333,50 @@ func TestRemoveFilesWithSoftLinks(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteFileByIDs(t *testing.T) {
|
func TestDeleteFiles(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
a := assert.New(t)
|
||||||
|
|
||||||
// 出错
|
// uid 不一致
|
||||||
|
{
|
||||||
|
err := DeleteFiles([]*File{{}}, 1)
|
||||||
|
a.Contains("User id not consistent", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除失败
|
||||||
{
|
{
|
||||||
mock.ExpectBegin()
|
mock.ExpectBegin()
|
||||||
mock.ExpectExec("DELETE(.+)").
|
mock.ExpectExec("DELETE(.+)").
|
||||||
WillReturnError(errors.New("error"))
|
WillReturnError(errors.New("error"))
|
||||||
mock.ExpectRollback()
|
mock.ExpectRollback()
|
||||||
err := DeleteFileByIDs([]uint{1, 2, 3})
|
err := DeleteFiles([]*File{{}}, 0)
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
asserts.Error(err)
|
a.Error(err)
|
||||||
}
|
}
|
||||||
// 成功
|
|
||||||
|
// 无法变更用户容量
|
||||||
{
|
{
|
||||||
mock.ExpectBegin()
|
mock.ExpectBegin()
|
||||||
mock.ExpectExec("DELETE(.+)").
|
mock.ExpectExec("DELETE(.+)").
|
||||||
WillReturnResult(sqlmock.NewResult(0, 3))
|
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectExec("UPDATE(.+)storage(.+)").WillReturnError(errors.New("error"))
|
||||||
|
mock.ExpectRollback()
|
||||||
|
err := DeleteFiles([]*File{{}}, 0)
|
||||||
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
a.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 成功,其中一个文件已经不存在
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("DELETE(.+)").
|
||||||
|
WillReturnResult(sqlmock.NewResult(1, 0))
|
||||||
|
mock.ExpectExec("DELETE(.+)").
|
||||||
|
WillReturnResult(sqlmock.NewResult(2, 1))
|
||||||
|
mock.ExpectExec("UPDATE(.+)storage(.+)").WithArgs(uint64(2), sqlmock.AnyArg()).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
mock.ExpectCommit()
|
mock.ExpectCommit()
|
||||||
err := DeleteFileByIDs([]uint{1, 2, 3})
|
err := DeleteFiles([]*File{{Size: 1}, {Size: 2}}, 0)
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
asserts.NoError(err)
|
a.NoError(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,6 +397,19 @@ func TestGetFilesByParentIDs(t *testing.T) {
|
||||||
asserts.Len(files, 3)
|
asserts.Len(files, 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetFilesByUploadSession(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
|
||||||
|
mock.ExpectQuery("SELECT(.+)").
|
||||||
|
WithArgs(1, "sessionID").
|
||||||
|
WillReturnRows(
|
||||||
|
sqlmock.NewRows([]string{"id", "name"}).AddRow(4, "4.txt"))
|
||||||
|
files, err := GetFilesByUploadSession("sessionID", 1)
|
||||||
|
a.NoError(err)
|
||||||
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
a.Equal("4.txt", files.Name)
|
||||||
|
}
|
||||||
|
|
||||||
func TestFile_Updates(t *testing.T) {
|
func TestFile_Updates(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
file := File{Model: gorm.Model{ID: 1}}
|
file := File{Model: gorm.Model{ID: 1}}
|
||||||
|
@ -340,22 +426,91 @@ func TestFile_Updates(t *testing.T) {
|
||||||
// UpdatePicInfo
|
// UpdatePicInfo
|
||||||
{
|
{
|
||||||
mock.ExpectBegin()
|
mock.ExpectBegin()
|
||||||
mock.ExpectExec("UPDATE(.+)").WithArgs(10, sqlmock.AnyArg(), 1).WillReturnResult(sqlmock.NewResult(1, 1))
|
mock.ExpectExec("UPDATE(.+)").WithArgs("1,1", 1).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
mock.ExpectCommit()
|
|
||||||
err := file.UpdateSize(10)
|
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
|
||||||
asserts.NoError(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdatePicInfo
|
|
||||||
{
|
|
||||||
mock.ExpectBegin()
|
|
||||||
mock.ExpectExec("UPDATE(.+)").WithArgs("1,1", sqlmock.AnyArg(), 1).WillReturnResult(sqlmock.NewResult(1, 1))
|
|
||||||
mock.ExpectCommit()
|
mock.ExpectCommit()
|
||||||
err := file.UpdatePicInfo("1,1")
|
err := file.UpdatePicInfo("1,1")
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
asserts.NoError(err)
|
asserts.NoError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateSourceName
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").WithArgs("newName", sqlmock.AnyArg(), 1).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
err := file.UpdateSourceName("newName")
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.NoError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFile_UpdateSize(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
|
||||||
|
// 增加成功
|
||||||
|
{
|
||||||
|
file := File{Size: 10}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)files(.+)").WithArgs(11, sqlmock.AnyArg(), 10).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectExec("UPDATE(.+)storage(.+)+(.+)").WithArgs(uint64(1), sqlmock.AnyArg()).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
|
||||||
|
a.NoError(file.UpdateSize(11))
|
||||||
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 减少成功
|
||||||
|
{
|
||||||
|
file := File{Size: 10}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)files(.+)").WithArgs(8, sqlmock.AnyArg(), 10).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectExec("UPDATE(.+)storage(.+)-(.+)").WithArgs(uint64(2), sqlmock.AnyArg()).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
|
||||||
|
a.NoError(file.UpdateSize(8))
|
||||||
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文件更新失败
|
||||||
|
{
|
||||||
|
file := File{Size: 10}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)files(.+)").WithArgs(8, sqlmock.AnyArg(), 10).WillReturnError(errors.New("error"))
|
||||||
|
mock.ExpectRollback()
|
||||||
|
|
||||||
|
a.Error(file.UpdateSize(8))
|
||||||
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户容量更新失败
|
||||||
|
{
|
||||||
|
file := File{Size: 10}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)files(.+)").WithArgs(8, sqlmock.AnyArg(), 10).WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectExec("UPDATE(.+)storage(.+)-(.+)").WithArgs(uint64(2), sqlmock.AnyArg()).WillReturnError(errors.New("error"))
|
||||||
|
mock.ExpectRollback()
|
||||||
|
|
||||||
|
a.Error(file.UpdateSize(8))
|
||||||
|
a.NoError(mock.ExpectationsWereMet())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFile_PopChunkToFile(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
timeNow := time.Now()
|
||||||
|
file := File{}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)files(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
a.NoError(file.PopChunkToFile(&timeNow, "1,1"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFile_CanCopy(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
file := File{}
|
||||||
|
a.True(file.CanCopy())
|
||||||
|
file.UploadSessionID = &file.Name
|
||||||
|
a.False(file.CanCopy())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFile_FileInfoInterface(t *testing.T) {
|
func TestFile_FileInfoInterface(t *testing.T) {
|
||||||
|
|
|
@ -212,12 +212,14 @@ func TestFolder_MoveOrCopyFileTo(t *testing.T) {
|
||||||
WithArgs(
|
WithArgs(
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
|
3,
|
||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
).WillReturnRows(
|
).WillReturnRows(
|
||||||
sqlmock.NewRows([]string{"id", "size"}).
|
sqlmock.NewRows([]string{"id", "size", "upload_session_id"}).
|
||||||
AddRow(1, 10).
|
AddRow(1, 10, nil).
|
||||||
AddRow(2, 20),
|
AddRow(2, 20, nil).
|
||||||
|
AddRow(2, 20, &folder.Name),
|
||||||
)
|
)
|
||||||
mock.ExpectBegin()
|
mock.ExpectBegin()
|
||||||
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
@ -226,7 +228,7 @@ func TestFolder_MoveOrCopyFileTo(t *testing.T) {
|
||||||
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
mock.ExpectCommit()
|
mock.ExpectCommit()
|
||||||
storage, err := folder.MoveOrCopyFileTo(
|
storage, err := folder.MoveOrCopyFileTo(
|
||||||
[]uint{1, 2},
|
[]uint{1, 2, 3},
|
||||||
&dstFolder,
|
&dstFolder,
|
||||||
true,
|
true,
|
||||||
)
|
)
|
||||||
|
@ -335,7 +337,7 @@ func TestFolder_CopyFolderTo(t *testing.T) {
|
||||||
// 测试复制目录结构
|
// 测试复制目录结构
|
||||||
// test(2)(5)
|
// test(2)(5)
|
||||||
// 1(3)(6) 2.txt
|
// 1(3)(6) 2.txt
|
||||||
// 3(4)(7) 4.txt
|
// 3(4)(7) 4.txt 5.txt(上传中)
|
||||||
|
|
||||||
// 正常情况 成功
|
// 正常情况 成功
|
||||||
{
|
{
|
||||||
|
@ -360,9 +362,10 @@ func TestFolder_CopyFolderTo(t *testing.T) {
|
||||||
mock.ExpectQuery("SELECT(.+)").
|
mock.ExpectQuery("SELECT(.+)").
|
||||||
WithArgs(1, 2, 3, 4).
|
WithArgs(1, 2, 3, 4).
|
||||||
WillReturnRows(
|
WillReturnRows(
|
||||||
sqlmock.NewRows([]string{"id", "name", "folder_id", "size"}).
|
sqlmock.NewRows([]string{"id", "name", "folder_id", "size", "upload_session_id"}).
|
||||||
AddRow(1, "2.txt", 2, 10).
|
AddRow(1, "2.txt", 2, 10, nil).
|
||||||
AddRow(2, "3.txt", 3, 20),
|
AddRow(2, "3.txt", 3, 20, nil).
|
||||||
|
AddRow(3, "5.txt", 3, 20, &dstFolder.Name),
|
||||||
)
|
)
|
||||||
|
|
||||||
// 复制子文件
|
// 复制子文件
|
||||||
|
|
|
@ -179,27 +179,6 @@ func (policy *Policy) GenerateFileName(uid uint, origin string) string {
|
||||||
return fileRule
|
return fileRule
|
||||||
}
|
}
|
||||||
|
|
||||||
func (policy Policy) getOriginNameRule(origin string) string {
|
|
||||||
// 部分存储策略可以使用{origin}代表原始文件名
|
|
||||||
if origin == "" {
|
|
||||||
// 如果上游未传回原始文件名,则使用占位符,让云存储端替换
|
|
||||||
switch policy.Type {
|
|
||||||
case "qiniu":
|
|
||||||
// 七牛会将$(fname)自动替换为原始文件名
|
|
||||||
return "$(fname)"
|
|
||||||
case "local", "remote":
|
|
||||||
return origin
|
|
||||||
case "oss", "cos":
|
|
||||||
// OSS会将${filename}自动替换为原始文件名
|
|
||||||
return "${filename}"
|
|
||||||
case "upyun":
|
|
||||||
// Upyun会将{filename}{.suffix}自动替换为原始文件名
|
|
||||||
return "{filename}{.suffix}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return origin
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsDirectlyPreview 返回此策略下文件是否可以直接预览(不需要重定向)
|
// IsDirectlyPreview 返回此策略下文件是否可以直接预览(不需要重定向)
|
||||||
func (policy *Policy) IsDirectlyPreview() bool {
|
func (policy *Policy) IsDirectlyPreview() bool {
|
||||||
return policy.Type == "local"
|
return policy.Type == "local"
|
||||||
|
|
|
@ -104,7 +104,7 @@ func TestPolicy_GenerateFileName(t *testing.T) {
|
||||||
asserts.Equal("123.txt", testPolicy.GenerateFileName(1, "123.txt"))
|
asserts.Equal("123.txt", testPolicy.GenerateFileName(1, "123.txt"))
|
||||||
|
|
||||||
testPolicy.Type = "oss"
|
testPolicy.Type = "oss"
|
||||||
asserts.Equal("${filename}", testPolicy.GenerateFileName(1, ""))
|
asserts.Equal("origin", testPolicy.GenerateFileName(1, "origin"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重命名开启
|
// 重命名开启
|
||||||
|
@ -145,19 +145,23 @@ func TestPolicy_GenerateFileName(t *testing.T) {
|
||||||
|
|
||||||
testPolicy.Type = "oss"
|
testPolicy.Type = "oss"
|
||||||
testPolicy.FileNameRule = "{uid}123{originname}"
|
testPolicy.FileNameRule = "{uid}123{originname}"
|
||||||
asserts.Equal("1123${filename}", testPolicy.GenerateFileName(1, ""))
|
asserts.Equal("1123123321", testPolicy.GenerateFileName(1, "123321"))
|
||||||
|
|
||||||
testPolicy.Type = "upyun"
|
testPolicy.Type = "upyun"
|
||||||
testPolicy.FileNameRule = "{uid}123{originname}"
|
testPolicy.FileNameRule = "{uid}123{originname}"
|
||||||
asserts.Equal("1123{filename}{.suffix}", testPolicy.GenerateFileName(1, ""))
|
asserts.Equal("1123123321", testPolicy.GenerateFileName(1, "123321"))
|
||||||
|
|
||||||
testPolicy.Type = "qiniu"
|
testPolicy.Type = "qiniu"
|
||||||
testPolicy.FileNameRule = "{uid}123{originname}"
|
testPolicy.FileNameRule = "{uid}123{originname}"
|
||||||
asserts.Equal("1123$(fname)", testPolicy.GenerateFileName(1, ""))
|
asserts.Equal("1123123321", testPolicy.GenerateFileName(1, "123321"))
|
||||||
|
|
||||||
testPolicy.Type = "local"
|
testPolicy.Type = "local"
|
||||||
testPolicy.FileNameRule = "{uid}123{originname}"
|
testPolicy.FileNameRule = "{uid}123{originname}"
|
||||||
asserts.Equal("1123", testPolicy.GenerateFileName(1, ""))
|
asserts.Equal("1123", testPolicy.GenerateFileName(1, ""))
|
||||||
|
|
||||||
|
testPolicy.Type = "local"
|
||||||
|
testPolicy.FileNameRule = "{ext}123{uuid}"
|
||||||
|
asserts.Contains(testPolicy.GenerateFileName(1, "123.txt"), ".txt123")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -170,78 +174,6 @@ func TestPolicy_IsDirectlyPreview(t *testing.T) {
|
||||||
asserts.False(policy.IsDirectlyPreview())
|
asserts.False(policy.IsDirectlyPreview())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPolicy_GetUploadURL(t *testing.T) {
|
|
||||||
asserts := assert.New(t)
|
|
||||||
|
|
||||||
// 本地
|
|
||||||
{
|
|
||||||
cache.Set("setting_siteURL", "http://127.0.0.1", 0)
|
|
||||||
policy := Policy{Type: "local", Server: "http://127.0.0.1"}
|
|
||||||
asserts.Equal("/api/v3/file/upload", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
// 远程
|
|
||||||
{
|
|
||||||
policy := Policy{Type: "remote", Server: "http://127.0.0.1"}
|
|
||||||
asserts.Equal("http://127.0.0.1/api/v3/slave/upload", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
// OSS
|
|
||||||
{
|
|
||||||
policy := Policy{Type: "oss", BucketName: "base", Server: "127.0.0.1"}
|
|
||||||
asserts.Equal("https://base.127.0.0.1", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
// cos
|
|
||||||
{
|
|
||||||
policy := Policy{Type: "cos", BaseURL: "base", Server: "http://127.0.0.1"}
|
|
||||||
asserts.Equal("http://127.0.0.1", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
// upyun
|
|
||||||
{
|
|
||||||
policy := Policy{Type: "upyun", BucketName: "base", Server: "http://127.0.0.1"}
|
|
||||||
asserts.Equal("https://v0.api.upyun.com/base", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
// 未知
|
|
||||||
{
|
|
||||||
policy := Policy{Type: "unknown", Server: "http://127.0.0.1"}
|
|
||||||
asserts.Equal("http://127.0.0.1", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
// S3 未填写自动生成
|
|
||||||
{
|
|
||||||
policy := Policy{
|
|
||||||
Type: "s3",
|
|
||||||
Server: "",
|
|
||||||
BucketName: "bucket",
|
|
||||||
OptionsSerialized: PolicyOption{Region: "us-east"},
|
|
||||||
}
|
|
||||||
asserts.Equal("https://bucket.s3.us-east.amazonaws.com/", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
// s3 自己指定
|
|
||||||
{
|
|
||||||
policy := Policy{
|
|
||||||
Type: "s3",
|
|
||||||
Server: "https://s3.us-east.amazonaws.com/",
|
|
||||||
BucketName: "bucket",
|
|
||||||
OptionsSerialized: PolicyOption{Region: "us-east"},
|
|
||||||
}
|
|
||||||
asserts.Equal("https://s3.us-east.amazonaws.com/bucket", policy.GetUploadURL())
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPolicy_IsPathGenerateNeeded(t *testing.T) {
|
|
||||||
asserts := assert.New(t)
|
|
||||||
policy := Policy{Type: "qiniu"}
|
|
||||||
asserts.True(policy.IsPathGenerateNeeded())
|
|
||||||
policy.Type = "remote"
|
|
||||||
asserts.False(policy.IsPathGenerateNeeded())
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPolicy_ClearCache(t *testing.T) {
|
func TestPolicy_ClearCache(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
cache.Set("policy_202", 1, 0)
|
cache.Set("policy_202", 1, 0)
|
||||||
|
@ -266,15 +198,18 @@ func TestPolicy_UpdateAccessKey(t *testing.T) {
|
||||||
func TestPolicy_Props(t *testing.T) {
|
func TestPolicy_Props(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
policy := Policy{Type: "onedrive"}
|
policy := Policy{Type: "onedrive"}
|
||||||
|
policy.OptionsSerialized.PlaceholderWithSize = true
|
||||||
asserts.False(policy.IsThumbGenerateNeeded())
|
asserts.False(policy.IsThumbGenerateNeeded())
|
||||||
asserts.True(policy.IsPathGenerateNeeded())
|
asserts.False(policy.IsTransitUpload(4))
|
||||||
asserts.True(policy.IsTransitUpload(4))
|
|
||||||
asserts.False(policy.IsTransitUpload(5 * 1024 * 1024))
|
asserts.False(policy.IsTransitUpload(5 * 1024 * 1024))
|
||||||
asserts.True(policy.CanStructureBeListed())
|
asserts.True(policy.CanStructureBeListed())
|
||||||
|
asserts.True(policy.IsUploadPlaceholderWithSize())
|
||||||
policy.Type = "local"
|
policy.Type = "local"
|
||||||
asserts.True(policy.IsThumbGenerateNeeded())
|
asserts.True(policy.IsThumbGenerateNeeded())
|
||||||
asserts.True(policy.IsPathGenerateNeeded())
|
|
||||||
asserts.False(policy.CanStructureBeListed())
|
asserts.False(policy.CanStructureBeListed())
|
||||||
|
asserts.False(policy.IsUploadPlaceholderWithSize())
|
||||||
|
policy.Type = "remote"
|
||||||
|
asserts.True(policy.IsUploadPlaceholderWithSize())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPolicy_IsThumbExist(t *testing.T) {
|
func TestPolicy_IsThumbExist(t *testing.T) {
|
||||||
|
|
|
@ -59,6 +59,15 @@ func TestGetSettingByType(t *testing.T) {
|
||||||
asserts.Equal(map[string]string{}, settings)
|
asserts.Equal(map[string]string{}, settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetSettingByNameWithDefault(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
|
||||||
|
rows := sqlmock.NewRows([]string{"name", "value", "type"})
|
||||||
|
mock.ExpectQuery("^SELECT \\* FROM `(.+)` WHERE `(.+)`\\.`deleted_at` IS NULL AND(.+)$").WillReturnRows(rows)
|
||||||
|
settings := GetSettingByNameWithDefault("123", "123321")
|
||||||
|
a.Equal("123321", settings)
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetSettingByNames(t *testing.T) {
|
func TestGetSettingByNames(t *testing.T) {
|
||||||
cache.Store = cache.NewMemoStore()
|
cache.Store = cache.NewMemoStore()
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
|
|
|
@ -56,8 +56,8 @@ func TestGetTagsByUID(t *testing.T) {
|
||||||
func TestGetTagsByID(t *testing.T) {
|
func TestGetTagsByID(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"name"}).AddRow("tag"))
|
mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"name"}).AddRow("tag"))
|
||||||
res, err := GetTagsByUID(1)
|
res, err := GetTagsByID(1, 1)
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
asserts.NoError(err)
|
asserts.NoError(err)
|
||||||
asserts.EqualValues("tag", res[0].Name)
|
asserts.EqualValues("tag", res.Name)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue