From b3ef833afd59be4d598c33bc36d98c99e007600d Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Wed, 27 Nov 2019 15:27:19 +0800 Subject: [PATCH] Fix: test error / missing AfterFind hook in user model --- models/group.go | 13 +++++++++++++ models/user.go | 14 +++++++------- models/user_test.go | 3 +++ pkg/serializer/user.go | 6 +++--- routers/router_test.go | 4 ++++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/models/group.go b/models/group.go index d1b7730..635e868 100644 --- a/models/group.go +++ b/models/group.go @@ -21,6 +21,19 @@ type Group struct { PolicyList []uint `gorm:"-"` } +// GetAria2Option 获取用户离线下载设备 +// TODO:测试 +func (group *Group) GetAria2Option() [3]bool { + if len(group.Aria2Option) != 3 { + return [3]bool{false, false, false} + } + return [3]bool{ + group.Aria2Option[0] == '1', + group.Aria2Option[1] == '1', + group.Aria2Option[2] == '1', + } +} + // GetGroupByID 用ID获取用户组 func GetGroupByID(ID interface{}) (Group, error) { var group Group diff --git a/models/user.go b/models/user.go index 9de8c74..f0b28cd 100644 --- a/models/user.go +++ b/models/user.go @@ -149,13 +149,6 @@ func (user *User) AfterCreate(tx *gorm.DB) (err error) { return err } -//SerializeOptions 将序列后的Option写入到数据库字段 -func (user *User) SerializeOptions() (err error) { - optionsValue, err := json.Marshal(&user.OptionsSerialized) - user.Options = string(optionsValue) - return err -} - // AfterFind 找到用户后的钩子 func (user *User) AfterFind() (err error) { // 解析用户设置到OptionsSerialized @@ -166,6 +159,13 @@ func (user *User) AfterFind() (err error) { return err } +//SerializeOptions 将序列后的Option写入到数据库字段 +func (user *User) SerializeOptions() (err error) { + optionsValue, err := json.Marshal(&user.OptionsSerialized) + user.Options = string(optionsValue) + return err +} + // CheckPassword 根据明文校验密码 func (user *User) CheckPassword(password string) (bool, error) { diff --git a/models/user_test.go b/models/user_test.go index d769662..0dd720c 100644 --- a/models/user_test.go +++ b/models/user_test.go @@ -47,6 +47,9 @@ func TestGetUserByID(t *testing.T) { Model: gorm.Model{ ID: 1, }, + OptionsSerialized: PolicyOption{ + FileType: []string{}, + }, Name: "默认上传策略", }, }, user) diff --git a/pkg/serializer/user.go b/pkg/serializer/user.go index c9678ba..a021205 100644 --- a/pkg/serializer/user.go +++ b/pkg/serializer/user.go @@ -41,7 +41,7 @@ type Group struct { // BuildUser 序列化用户 func BuildUser(user model.User) User { - fmt.Println(user) + aria2Option := user.Group.GetAria2Option() return User{ ID: user.ID, Email: user.Email, @@ -58,8 +58,8 @@ func BuildUser(user model.User) User { }, Group: Group{ AllowShare: user.Group.ShareEnabled, - AllowRemoteDownload: user.Group.Aria2Option[0] == '1', - AllowTorrentDownload: user.Group.Aria2Option[2] == '1', + AllowRemoteDownload: aria2Option[0], + AllowTorrentDownload: aria2Option[2], }, } } diff --git a/routers/router_test.go b/routers/router_test.go index edb6c9d..66f4964 100644 --- a/routers/router_test.go +++ b/routers/router_test.go @@ -82,6 +82,10 @@ func TestUserSession(t *testing.T) { expected: serializer.BuildUserResponse(model.User{ Email: "admin@cloudreve.org", Nick: "admin", + Policy: model.Policy{ + Type: "local", + OptionsSerialized: model.PolicyOption{FileType: []string{}}, + }, }), }, // 登录信息正确,需要验证码,验证码错误