package adminuser import ( "fmt" "github.com/pkg/errors" "golang.org/x/crypto/bcrypt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "gorm.io/gorm/schema" req "sghgogs.com/sghblog/authorization-service/domain/model/request" "sghgogs.com/sghblog/authorization-service/domain/repository" "sghgogs.com/sghblog/authorization-service/domain/service" pb "sghgogs.com/sghblog/authorization-service/proto" "testing" ) // hashPassword 使用 bcrypt 对密码进行哈希 func hashPassword(password string) (string, error) { hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { return "", err } return string(hash), nil } func TestAdminLogin(t *testing.T) { address := fmt.Sprintf("%v:%v@(%v:%v)/%v?charset=utf8mb4,utf8&parseTime=True&loc=Local", "root", "xugang131500", "47.56.16.206", 3306, "sghblog") db, err := gorm.Open(mysql.Open(address), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), NamingStrategy: schema.NamingStrategy{ SingularTable: true, }}) if err != nil { t.Fatal(err) } repo := repository.NewRepository(db) newService := service.NewService(repo) t.Run("sql 测试查询", func(t *testing.T) { var unassignedRoles []req.AdminRole db.Model(req.AdminRole{}). Where("NOT EXISTS (SELECT 1 FROM admin_user_role WHERE admin_role.id = admin_user_role.admin_role_id AND admin_user_role.admin_user_id = ?)", 1). Find(&unassignedRoles) fmt.Println("unassignedRoles", unassignedRoles) }) t.Run("测试查询语句", func(t *testing.T) { if err = db.Where("id = ? ", 2).First(&req.AdminUser{}).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { // ID 为 6 的用户不存在 fmt.Println("用户不存在:", err) } else { // 处理其他错误 fmt.Errorf("查找用户出错: %v", err) } } }) t.Run("更新账号信息", func(t *testing.T) { // newService.ToggleAdminUser(&pb.ToggleAdminUserRequest{ // UserId: 1, // Status: pb.StatusEnum_ENABLED, // }) var users []req.AdminUser err2 := db.Model(req.AdminUser{}).Where("id IN ?", []int64{1, 2, 3, 4, 5, 6, 7}).Find(&users).Error fmt.Println(err2) fmt.Println("users", len(users)) // db.Model(&req.AdminUser{}).Where("id = ?", 7).Updates(map[string]interface{}{ // "status": pb.StatusEnum_ENABLED, // }) }) t.Run("创建账号", func(t *testing.T) { // Username: adminUser.Username, // Password: password, // PhoneNumber: adminUser.PhoneNumber, // Email: adminUser.Email, // Avatar: adminUser.Avatar, err2 := newService.CreateAdminUser(&pb.CreateAdminUserRequest{ Username: "kube_admin", Password: "123456", PhoneNumber: "13900000000", Email: "sghblog@163.com", Avatar: "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", }) // request := &authorization_service.CreateAdminUserRequest{ // Username: "admin", // Password: password, // // Status: "enabled", // // IsReserved: true, // // CreatedAt: time.Now().Unix(), // } // 调用 AdminLogin 方法 // err = newService.CreateAdminUser(request) fmt.Println(err2) }) t.Run("账号关联角色", func(t *testing.T) { // request := &authorization_service.AssociateAdminUserWithRoleRequest{ // UserId: 1, // } // // 调用 AdminLogin 方法 // err = newService.AssociateUserWithRole(request) // fmt.Println(err) }) t.Run("取消关联", func(t *testing.T) { // newService.RevokeAdminUserWithRole() }) t.Run("获取个人信息", func(t *testing.T) { user, err2 := newService.GetAdminUser(1) fmt.Println(err2) fmt.Println(user) }) t.Run("获取列表", func(t *testing.T) { // var users []req.AdminUser adminUsers, _, _ := newService.ListAdminUsers(&pb.ListAdminUsersRequest{ Page: 1, PageSize: 10, Keyword: "", }) fmt.Println(adminUsers) }) t.Run("获取列表", func(t *testing.T) { // roles, err2 := newService.GetAdminUserAssociatedRoles("role_admin") // fmt.Println(err2) // fmt.Println(roles) }) t.Run("更新个人信息", func(t *testing.T) { // unix := time.Now().AddDate(-20, 0, 0).Unix() // profileInfoRequest := &authorization_service.UpdateAdminUserProfileInfoRequest{ // UserId: 1, // Profile: &authorization_service.AdminUserProfile{ // Avatar: "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", // PhoneNumber: "13800000000", // Email: "sghblog@163.com", // Bio: "没啥要说的", // Birthdate: unix, // Gender: 0, // Address: "北京", // Website: "https://sghblog.com", // }, // } // err = newService.UpdateAdminUserProfileInfoRequest(profileInfoRequest) fmt.Println(err) }) // AssociateUserWithRole // user, err := repo.AdminLogin(loginRequest) // 断言期望的结果 // assert.NoError(t, err) // assert.NotNil(t, user) // assert.Equal(t, loginRequest.Username, user.Username) }