补充测试用例
This commit is contained in:
@@ -38,7 +38,37 @@ func TestUser_CheckPassword(t *testing.T) {
|
||||
assert.False(t, match, "空密码应该校验失败")
|
||||
})
|
||||
}
|
||||
func TestUser_BeforeCreate(t *testing.T) {
|
||||
t.Run("密码应被成功哈希", func(t *testing.T) {
|
||||
plainPassword := "securepassword123"
|
||||
user := &models.User{
|
||||
Username: "testuser",
|
||||
Password: plainPassword,
|
||||
}
|
||||
|
||||
// 注意:BeforeSave 钩子是一个 GORM 框架的回调,它的正确性
|
||||
// 将在 repository 的集成测试中,通过实际创建一个用户来得到验证,
|
||||
// 而不是在这里进行孤立的、脆弱的单元测试。
|
||||
// 模拟 GORM 钩子调用
|
||||
err := user.BeforeCreate(nil) // GORM 钩子通常接收 *gorm.DB,这里我们传入 nil,因为 BeforeCreate 不依赖 DB
|
||||
assert.NoError(t, err, "BeforeCreate 不应返回错误")
|
||||
|
||||
// 验证密码是否已被哈希(不再是明文)
|
||||
assert.NotEqual(t, plainPassword, user.Password, "密码应已被哈希")
|
||||
|
||||
// 验证哈希后的密码是否能被正确校验
|
||||
assert.True(t, user.CheckPassword(plainPassword), "哈希后的密码应能通过校验")
|
||||
})
|
||||
|
||||
t.Run("空密码不应被哈希", func(t *testing.T) {
|
||||
plainPassword := ""
|
||||
user := &models.User{
|
||||
Username: "empty_pass_user",
|
||||
Password: plainPassword,
|
||||
}
|
||||
|
||||
// 模拟 GORM 钩子调用
|
||||
err := user.BeforeCreate(nil)
|
||||
assert.NoError(t, err, "BeforeCreate 不应返回错误")
|
||||
|
||||
// 验证密码仍然是空字符串
|
||||
assert.Equal(t, plainPassword, user.Password, "空密码不应被哈希")
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user