LicenseManger/internal/service/user_test.go

62 lines
1.7 KiB
Go
Raw Permalink Normal View History

2024-11-14 14:55:43 +00:00
package service
import (
"licserver/internal/model"
"licserver/internal/utils"
"testing"
"github.com/stretchr/testify/assert"
)
func TestUserService_Register(t *testing.T) {
db := utils.TestDB(t)
config := utils.TestConfig()
userService := NewUserService(db, config)
// 测试正常注册
err := userService.Register("testuser", "password123", "test@example.com", "123456")
assert.NoError(t, err)
var user model.User
err = db.Where("username = ?", "testuser").First(&user).Error
assert.NoError(t, err)
assert.Equal(t, "testuser", user.Username)
assert.Equal(t, "test@example.com", user.Email)
assert.Equal(t, "user", user.Role)
// 测试重复用户名
err = userService.Register("testuser", "password123", "test2@example.com", "123456")
assert.Error(t, err)
assert.Contains(t, err.Error(), "用户名已存在")
// 测试重复邮箱
err = userService.Register("testuser2", "password123", "test@example.com", "123456")
assert.Error(t, err)
assert.Contains(t, err.Error(), "邮箱已被注册")
}
func TestUserService_Login(t *testing.T) {
db := utils.TestDB(t)
config := utils.TestConfig()
userService := NewUserService(db, config)
// 创建测试用户
err := userService.Register("testuser", "password123", "test@example.com", "123456")
assert.NoError(t, err)
// 测试正确登录
token, err := userService.Login("testuser", "password123")
assert.NoError(t, err)
assert.NotEmpty(t, token)
// 测试错误密码
_, err = userService.Login("testuser", "wrongpassword")
assert.Error(t, err)
assert.Contains(t, err.Error(), "密码错误")
// 测试不存在的用户
_, err = userService.Login("nonexistent", "password123")
assert.Error(t, err)
assert.Contains(t, err.Error(), "用户不存在")
}