mirror of https://github.com/cloudreve/Cloudreve
Test: share/storage/user model
parent
0253b4e5b6
commit
0502a0f212
|
@ -143,3 +143,47 @@ func TestBeforeShareDownload(t *testing.T) {
|
||||||
asserts.False(c.IsAborted())
|
asserts.False(c.IsAborted())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestShareOwner(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
rec := httptest.NewRecorder()
|
||||||
|
testFunc := ShareOwner()
|
||||||
|
|
||||||
|
// 未登录
|
||||||
|
{
|
||||||
|
c, _ := gin.CreateTestContext(rec)
|
||||||
|
testFunc(c)
|
||||||
|
asserts.True(c.IsAborted())
|
||||||
|
|
||||||
|
c, _ = gin.CreateTestContext(rec)
|
||||||
|
c.Set("share", &model.Share{})
|
||||||
|
testFunc(c)
|
||||||
|
asserts.True(c.IsAborted())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 非用户所创建分享
|
||||||
|
{
|
||||||
|
c, _ := gin.CreateTestContext(rec)
|
||||||
|
testFunc(c)
|
||||||
|
asserts.True(c.IsAborted())
|
||||||
|
|
||||||
|
c, _ = gin.CreateTestContext(rec)
|
||||||
|
c.Set("share", &model.Share{User: model.User{Model: gorm.Model{ID: 1}}})
|
||||||
|
c.Set("user", &model.User{})
|
||||||
|
testFunc(c)
|
||||||
|
asserts.True(c.IsAborted())
|
||||||
|
}
|
||||||
|
|
||||||
|
// 正常
|
||||||
|
{
|
||||||
|
c, _ := gin.CreateTestContext(rec)
|
||||||
|
testFunc(c)
|
||||||
|
asserts.True(c.IsAborted())
|
||||||
|
|
||||||
|
c, _ = gin.CreateTestContext(rec)
|
||||||
|
c.Set("share", &model.Share{})
|
||||||
|
c.Set("user", &model.User{})
|
||||||
|
testFunc(c)
|
||||||
|
asserts.False(c.IsAborted())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -67,6 +67,11 @@ func (share *Share) IsAvailable() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查创建者状态
|
||||||
|
if share.Creator().Status != Active {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// 检查源对象是否存在
|
// 检查源对象是否存在
|
||||||
var sourceID uint
|
var sourceID uint
|
||||||
if share.IsDir {
|
if share.IsDir {
|
||||||
|
@ -81,11 +86,6 @@ func (share *Share) IsAvailable() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查创建者状态
|
|
||||||
if share.Creator().Status != Active {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,17 @@ func TestShare_IsAvailable(t *testing.T) {
|
||||||
asserts.True(share.IsAvailable())
|
asserts.True(share.IsAvailable())
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 用户被封禁
|
||||||
|
{
|
||||||
|
share := Share{
|
||||||
|
RemainDownloads: -1,
|
||||||
|
SourceID: 2,
|
||||||
|
IsDir: true,
|
||||||
|
User: User{Status: Baned},
|
||||||
|
}
|
||||||
|
asserts.False(share.IsAvailable())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestShare_GetCreator(t *testing.T) {
|
func TestShare_GetCreator(t *testing.T) {
|
||||||
|
@ -320,3 +331,64 @@ func TestShare_Viewed(t *testing.T) {
|
||||||
asserts.NoError(mock.ExpectationsWereMet())
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
asserts.EqualValues(1, share.Views)
|
asserts.EqualValues(1, share.Views)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestShare_UpdateAndDelete(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
share := Share{}
|
||||||
|
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").
|
||||||
|
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
err := share.Update(map[string]interface{}{"id": 1})
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.NoError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").
|
||||||
|
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
err := share.Delete()
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.NoError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").
|
||||||
|
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
err := DeleteShareBySourceIDs([]uint{1}, true)
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.NoError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListShares(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(2).AddRow(2))
|
||||||
|
mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1).AddRow(2))
|
||||||
|
|
||||||
|
res, total := ListShares(1, 1, 10, "desc", true)
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Len(res, 2)
|
||||||
|
asserts.Equal(2, total)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSearchShares(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1))
|
||||||
|
mock.ExpectQuery("SELECT(.+)").
|
||||||
|
WithArgs("", sqlmock.AnyArg(), "%1%2%").
|
||||||
|
WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(1))
|
||||||
|
res, total := SearchShares(1, 10, "id", "1 2")
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Len(res, 1)
|
||||||
|
asserts.Equal(1, total)
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"github.com/DATA-DOG/go-sqlmock"
|
"github.com/DATA-DOG/go-sqlmock"
|
||||||
"github.com/jinzhu/gorm"
|
"github.com/jinzhu/gorm"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -37,3 +38,49 @@ func TestUser_GetAvailablePackSize(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestStoragePack_Create(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
pack := &StoragePack{}
|
||||||
|
|
||||||
|
// 成功
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("INSERT(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
id, err := pack.Create()
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Equal(uint(1), id)
|
||||||
|
asserts.NoError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 失败
|
||||||
|
{
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("INSERT(.+)").WillReturnError(errors.New("error"))
|
||||||
|
mock.ExpectRollback()
|
||||||
|
id, err := pack.Create()
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Equal(uint(0), id)
|
||||||
|
asserts.Error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetExpiredStoragePack(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}))
|
||||||
|
res := GetExpiredStoragePack()
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Len(res, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestStoragePack_Delete(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
pack := &StoragePack{}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
asserts.NoError(pack.Delete())
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -62,6 +62,58 @@ func TestGetUserByID(t *testing.T) {
|
||||||
asserts.Equal(User{}, user)
|
asserts.Equal(User{}, user)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetActiveUserByID(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
cache.Deletes([]string{"1"}, "policy_")
|
||||||
|
//找到用户时
|
||||||
|
userRows := sqlmock.NewRows([]string{"id", "deleted_at", "email", "options", "group_id"}).
|
||||||
|
AddRow(1, nil, "admin@cloudreve.org", "{}", 1)
|
||||||
|
mock.ExpectQuery("^SELECT (.+)").WillReturnRows(userRows)
|
||||||
|
|
||||||
|
groupRows := sqlmock.NewRows([]string{"id", "name", "policies"}).
|
||||||
|
AddRow(1, "管理员", "[1]")
|
||||||
|
mock.ExpectQuery("^SELECT (.+)").WillReturnRows(groupRows)
|
||||||
|
|
||||||
|
policyRows := sqlmock.NewRows([]string{"id", "name"}).
|
||||||
|
AddRow(1, "默认存储策略")
|
||||||
|
mock.ExpectQuery("^SELECT (.+)").WillReturnRows(policyRows)
|
||||||
|
|
||||||
|
user, err := GetActiveUserByID(1)
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal(User{
|
||||||
|
Model: gorm.Model{
|
||||||
|
ID: 1,
|
||||||
|
DeletedAt: nil,
|
||||||
|
},
|
||||||
|
Email: "admin@cloudreve.org",
|
||||||
|
Options: "{}",
|
||||||
|
GroupID: 1,
|
||||||
|
Group: Group{
|
||||||
|
Model: gorm.Model{
|
||||||
|
ID: 1,
|
||||||
|
},
|
||||||
|
Name: "管理员",
|
||||||
|
Policies: "[1]",
|
||||||
|
PolicyList: []uint{1},
|
||||||
|
},
|
||||||
|
Policy: Policy{
|
||||||
|
Model: gorm.Model{
|
||||||
|
ID: 1,
|
||||||
|
},
|
||||||
|
OptionsSerialized: PolicyOption{
|
||||||
|
FileType: []string{},
|
||||||
|
},
|
||||||
|
Name: "默认存储策略",
|
||||||
|
},
|
||||||
|
}, user)
|
||||||
|
|
||||||
|
//未找到用户时
|
||||||
|
mock.ExpectQuery("^SELECT (.+)").WillReturnError(errors.New("not found"))
|
||||||
|
user, err = GetActiveUserByID(1)
|
||||||
|
asserts.Error(err)
|
||||||
|
asserts.Equal(User{}, user)
|
||||||
|
}
|
||||||
|
|
||||||
func TestUser_SetPassword(t *testing.T) {
|
func TestUser_SetPassword(t *testing.T) {
|
||||||
asserts := assert.New(t)
|
asserts := assert.New(t)
|
||||||
user := User{}
|
user := User{}
|
||||||
|
@ -387,3 +439,14 @@ func TestUser_IsAnonymous(t *testing.T) {
|
||||||
user.ID = 1
|
user.ID = 1
|
||||||
asserts.False(user.IsAnonymous())
|
asserts.False(user.IsAnonymous())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUser_SetStatus(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
user := User{}
|
||||||
|
mock.ExpectBegin()
|
||||||
|
mock.ExpectExec("UPDATE(.+)").WillReturnResult(sqlmock.NewResult(1, 1))
|
||||||
|
mock.ExpectCommit()
|
||||||
|
user.SetStatus(Baned)
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Equal(Baned, user.Status)
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/DATA-DOG/go-sqlmock"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetWebdavByPassword(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
mock.ExpectQuery("SELECT(.+)").WillReturnRows(sqlmock.NewRows([]string{"id"}))
|
||||||
|
_, err := GetWebdavByPassword("e", 1)
|
||||||
|
asserts.NoError(mock.ExpectationsWereMet())
|
||||||
|
asserts.Error(err)
|
||||||
|
}
|
Loading…
Reference in New Issue