Test: share/storage/user model
This commit is contained in:
parent
0253b4e5b6
commit
0502a0f212
6 changed files with 246 additions and 5 deletions
|
@ -143,3 +143,47 @@ func TestBeforeShareDownload(t *testing.T) {
|
|||
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
|
||||
}
|
||||
|
||||
// 检查创建者状态
|
||||
if share.Creator().Status != Active {
|
||||
return false
|
||||
}
|
||||
|
||||
// 检查源对象是否存在
|
||||
var sourceID uint
|
||||
if share.IsDir {
|
||||
|
@ -81,11 +86,6 @@ func (share *Share) IsAvailable() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// 检查创建者状态
|
||||
if share.Creator().Status != Active {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
|
@ -114,6 +114,17 @@ func TestShare_IsAvailable(t *testing.T) {
|
|||
asserts.True(share.IsAvailable())
|
||||
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) {
|
||||
|
@ -320,3 +331,64 @@ func TestShare_Viewed(t *testing.T) {
|
|||
asserts.NoError(mock.ExpectationsWereMet())
|
||||
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
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
"github.com/jinzhu/gorm"
|
||||
"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)
|
||||
}
|
||||
|
||||
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) {
|
||||
asserts := assert.New(t)
|
||||
user := User{}
|
||||
|
@ -387,3 +439,14 @@ func TestUser_IsAnonymous(t *testing.T) {
|
|||
user.ID = 1
|
||||
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)
|
||||
}
|
||||
|
|
15
models/webdav_test.go
Normal file
15
models/webdav_test.go
Normal file
|
@ -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…
Add table
Reference in a new issue