mirror of
https://github.com/cloudreve/cloudreve.git
synced 2025-11-03 20:39:32 +08:00
User model/migrations and gorm init
This commit is contained in:
83
models/user_test.go
Normal file
83
models/user_test.go
Normal file
@ -0,0 +1,83 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGetUser(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
|
||||
// 准备数据库 Mock
|
||||
db, mock, err := sqlmock.New()
|
||||
if err != nil {
|
||||
t.Errorf("An error '%s' was not expected when opening a stub database connection", err)
|
||||
}
|
||||
DB, _ = gorm.Open("mysql", db)
|
||||
defer db.Close()
|
||||
|
||||
//找到用户时
|
||||
rows := sqlmock.NewRows([]string{"id", "deleted_at", "email"}).
|
||||
AddRow(1, nil, "admin@cloudreve.org")
|
||||
|
||||
mock.ExpectQuery("^SELECT (.+)").WillReturnRows(rows)
|
||||
|
||||
user, err := GetUser(1)
|
||||
asserts.NoError(err)
|
||||
asserts.Equal(User{
|
||||
Model: gorm.Model{
|
||||
ID: 1,
|
||||
DeletedAt: nil,
|
||||
},
|
||||
Email: "admin@cloudreve.org",
|
||||
}, user)
|
||||
|
||||
//未找到用户时
|
||||
mock.ExpectQuery("^SELECT (.+)").WillReturnError(errors.New("not found"))
|
||||
user, err = GetUser(1)
|
||||
asserts.Error(err)
|
||||
asserts.Equal(User{}, user)
|
||||
}
|
||||
|
||||
func TestUser_SetPassword(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
user := User{}
|
||||
err := user.SetPassword("Cause Sega does what nintendon't")
|
||||
asserts.NoError(err)
|
||||
asserts.NotEmpty(user.Password)
|
||||
}
|
||||
|
||||
func TestUser_CheckPassword(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
user := User{}
|
||||
err := user.SetPassword("Cause Sega does what nintendon't")
|
||||
asserts.NoError(err)
|
||||
|
||||
//密码正确
|
||||
res, err := user.CheckPassword("Cause Sega does what nintendon't")
|
||||
asserts.NoError(err)
|
||||
asserts.True(res)
|
||||
|
||||
//密码错误
|
||||
res, err = user.CheckPassword("Cause Sega does what Nintendon't")
|
||||
asserts.NoError(err)
|
||||
asserts.False(res)
|
||||
|
||||
//密码字段为空
|
||||
user = User{}
|
||||
res, err = user.CheckPassword("Cause Sega does what nintendon't")
|
||||
asserts.Error(err)
|
||||
asserts.False(res)
|
||||
|
||||
}
|
||||
|
||||
func TestNewUser(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
newUser := NewUser()
|
||||
asserts.IsType(User{}, newUser)
|
||||
asserts.NotEmpty(newUser.Avatar)
|
||||
asserts.NotEmpty(newUser.Options)
|
||||
}
|
||||
Reference in New Issue
Block a user