admin_user_test.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package adminuser
  2. import (
  3. "fmt"
  4. "github.com/pkg/errors"
  5. "golang.org/x/crypto/bcrypt"
  6. "gorm.io/driver/mysql"
  7. "gorm.io/gorm"
  8. "gorm.io/gorm/logger"
  9. "gorm.io/gorm/schema"
  10. req "sghgogs.com/sghblog/authorization-service/domain/model/request"
  11. "sghgogs.com/sghblog/authorization-service/domain/repository"
  12. "sghgogs.com/sghblog/authorization-service/domain/service"
  13. pb "sghgogs.com/sghblog/authorization-service/proto"
  14. "testing"
  15. )
  16. // hashPassword 使用 bcrypt 对密码进行哈希
  17. func hashPassword(password string) (string, error) {
  18. hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
  19. if err != nil {
  20. return "", err
  21. }
  22. return string(hash), nil
  23. }
  24. func TestAdminLogin(t *testing.T) {
  25. address := fmt.Sprintf("%v:%v@(%v:%v)/%v?charset=utf8mb4,utf8&parseTime=True&loc=Local", "root", "xugang131500", "47.56.16.206", 3306, "sghblog")
  26. db, err := gorm.Open(mysql.Open(address), &gorm.Config{
  27. Logger: logger.Default.LogMode(logger.Info),
  28. NamingStrategy: schema.NamingStrategy{
  29. SingularTable: true,
  30. }})
  31. if err != nil {
  32. t.Fatal(err)
  33. }
  34. repo := repository.NewRepository(db)
  35. newService := service.NewService(repo)
  36. t.Run("sql 测试查询", func(t *testing.T) {
  37. var unassignedRoles []req.AdminRole
  38. db.Model(req.AdminRole{}).
  39. 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).
  40. Find(&unassignedRoles)
  41. fmt.Println("unassignedRoles", unassignedRoles)
  42. })
  43. t.Run("测试查询语句", func(t *testing.T) {
  44. if err = db.Where("id = ? ", 2).First(&req.AdminUser{}).Error; err != nil {
  45. if errors.Is(err, gorm.ErrRecordNotFound) {
  46. // ID 为 6 的用户不存在
  47. fmt.Println("用户不存在:", err)
  48. } else {
  49. // 处理其他错误
  50. fmt.Errorf("查找用户出错: %v", err)
  51. }
  52. }
  53. })
  54. t.Run("更新账号信息", func(t *testing.T) {
  55. // newService.ToggleAdminUser(&pb.ToggleAdminUserRequest{
  56. // UserId: 1,
  57. // Status: pb.StatusEnum_ENABLED,
  58. // })
  59. var users []req.AdminUser
  60. err2 := db.Model(req.AdminUser{}).Where("id IN ?", []int64{1, 2, 3, 4, 5, 6, 7}).Find(&users).Error
  61. fmt.Println(err2)
  62. fmt.Println("users", len(users))
  63. // db.Model(&req.AdminUser{}).Where("id = ?", 7).Updates(map[string]interface{}{
  64. // "status": pb.StatusEnum_ENABLED,
  65. // })
  66. })
  67. t.Run("创建账号", func(t *testing.T) {
  68. // Username: adminUser.Username,
  69. // Password: password,
  70. // PhoneNumber: adminUser.PhoneNumber,
  71. // Email: adminUser.Email,
  72. // Avatar: adminUser.Avatar,
  73. err2 := newService.CreateAdminUser(&pb.CreateAdminUserRequest{
  74. Username: "kube_admin",
  75. Password: "123456",
  76. PhoneNumber: "13900000000",
  77. Email: "sghblog@163.com",
  78. Avatar: "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
  79. })
  80. // request := &authorization_service.CreateAdminUserRequest{
  81. // Username: "admin",
  82. // Password: password,
  83. // // Status: "enabled",
  84. // // IsReserved: true,
  85. // // CreatedAt: time.Now().Unix(),
  86. // }
  87. // 调用 AdminLogin 方法
  88. // err = newService.CreateAdminUser(request)
  89. fmt.Println(err2)
  90. })
  91. t.Run("账号关联角色", func(t *testing.T) {
  92. // request := &authorization_service.AssociateAdminUserWithRoleRequest{
  93. // UserId: 1,
  94. // }
  95. // // 调用 AdminLogin 方法
  96. // err = newService.AssociateUserWithRole(request)
  97. // fmt.Println(err)
  98. })
  99. t.Run("取消关联", func(t *testing.T) {
  100. // newService.RevokeAdminUserWithRole()
  101. })
  102. t.Run("获取个人信息", func(t *testing.T) {
  103. user, err2 := newService.GetAdminUser(1)
  104. fmt.Println(err2)
  105. fmt.Println(user)
  106. })
  107. t.Run("获取列表", func(t *testing.T) {
  108. // var users []req.AdminUser
  109. adminUsers, _, _ := newService.ListAdminUsers(&pb.ListAdminUsersRequest{
  110. Page: 1,
  111. PageSize: 10,
  112. Keyword: "",
  113. })
  114. fmt.Println(adminUsers)
  115. })
  116. t.Run("获取列表", func(t *testing.T) {
  117. // roles, err2 := newService.GetAdminUserAssociatedRoles("role_admin")
  118. // fmt.Println(err2)
  119. // fmt.Println(roles)
  120. })
  121. t.Run("更新个人信息", func(t *testing.T) {
  122. // unix := time.Now().AddDate(-20, 0, 0).Unix()
  123. // profileInfoRequest := &authorization_service.UpdateAdminUserProfileInfoRequest{
  124. // UserId: 1,
  125. // Profile: &authorization_service.AdminUserProfile{
  126. // Avatar: "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
  127. // PhoneNumber: "13800000000",
  128. // Email: "sghblog@163.com",
  129. // Bio: "没啥要说的",
  130. // Birthdate: unix,
  131. // Gender: 0,
  132. // Address: "北京",
  133. // Website: "https://sghblog.com",
  134. // },
  135. // }
  136. // err = newService.UpdateAdminUserProfileInfoRequest(profileInfoRequest)
  137. fmt.Println(err)
  138. })
  139. // AssociateUserWithRole
  140. // user, err := repo.AdminLogin(loginRequest)
  141. // 断言期望的结果
  142. // assert.NoError(t, err)
  143. // assert.NotNil(t, user)
  144. // assert.Equal(t, loginRequest.Username, user.Username)
  145. }