admin_role_test.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package admin_role
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/google/uuid"
  6. "go-micro.dev/v4/auth"
  7. "golang.org/x/crypto/bcrypt"
  8. "gorm.io/driver/mysql"
  9. "gorm.io/gorm"
  10. "gorm.io/gorm/logger"
  11. "gorm.io/gorm/schema"
  12. req "sghgogs.com/sghblog/authorization-service/domain/model/request"
  13. "sghgogs.com/sghblog/authorization-service/domain/repository"
  14. "sghgogs.com/sghblog/authorization-service/domain/service"
  15. pb "sghgogs.com/sghblog/authorization-service/proto"
  16. "testing"
  17. )
  18. // hashPassword 使用 bcrypt 对密码进行哈希
  19. func hashPassword(password string) (string, error) {
  20. hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
  21. if err != nil {
  22. return "", err
  23. }
  24. return string(hash), nil
  25. }
  26. func TestAdminLogin(t *testing.T) {
  27. address := fmt.Sprintf("%v:%v@(%v:%v)/%v?charset=utf8mb4,utf8&parseTime=True&loc=Local", "root", "xugang131500", "47.56.16.206", 3306, "sghblog")
  28. db, err := gorm.Open(mysql.Open(address), &gorm.Config{
  29. Logger: logger.Default.LogMode(logger.Info),
  30. NamingStrategy: schema.NamingStrategy{
  31. SingularTable: true,
  32. }})
  33. if err != nil {
  34. t.Fatal(err)
  35. }
  36. repo := repository.NewRepository(db)
  37. newService := service.NewService(repo)
  38. t.Run("创建角色", func(t *testing.T) {
  39. roleRequest := &pb.CreateAdminRoleRequest{
  40. Name: "kubernetes",
  41. Description: "K8s 管理员",
  42. }
  43. err = newService.CreateAdminRole(context.Background(), roleRequest)
  44. fmt.Println(err)
  45. fmt.Println(roleRequest)
  46. })
  47. t.Run("测试创建", func(t *testing.T) {
  48. // role := req.AdminRole{
  49. // Name: "12sdfa3",
  50. // Description: "12312312",
  51. // CreatedBy: "asdf",
  52. // CreatedAt: time.Time{},
  53. // UpdatedAt: nil,
  54. // Status: pb.StatusEnum_DELETED,
  55. // IsReserved: false,
  56. // }
  57. // db.Model(req.AdminRole{}).Create(&role)
  58. var res req.AdminRole
  59. db.Where("name = ?", "12sdfa3").Model(res)
  60. fmt.Println("res", res.Status == pb.StatusEnum_DELETED)
  61. fmt.Println("res", res.Status == pb.StatusEnum_ENABLED)
  62. fmt.Println("res", res.Status == pb.StatusEnum_DISABLED)
  63. // ids := []int64{1, 2, 3, 4, 5, 6, 7}
  64. // err2 := db.Model(req.AdminRole{}).Where("id IN ?", ids).Updates(map[string]interface{}{
  65. // "status": pb.StatusEnum_ENABLED,
  66. // }).Error
  67. // fmt.Println(err2)
  68. // err2 := newService.ToggleAdminRole(context.Background(), 1, pb.StatusEnum_ENABLED)
  69. // fmt.Println(err2)
  70. })
  71. t.Run("查询角色列表", func(t *testing.T) {
  72. rolesRequest := &pb.ListAdminRolesRequest{
  73. Page: 1,
  74. PageSize: 10,
  75. }
  76. roles, i, err2 := newService.ListAdminRoles(rolesRequest)
  77. for _, item := range roles {
  78. fmt.Println("item", item)
  79. }
  80. fmt.Println(i)
  81. fmt.Println(err2)
  82. })
  83. t.Run("获取所有启用的角色", func(t *testing.T) {
  84. roles, err2 := newService.RetrieveEnabledRoles()
  85. fmt.Println(err2)
  86. fmt.Println(roles)
  87. })
  88. t.Run("获取详情", func(t *testing.T) {
  89. role, err2 := newService.GetAdminRole(1)
  90. fmt.Println(err2)
  91. fmt.Println(role)
  92. // fmt.Println(role)
  93. })
  94. t.Run("授权角色", func(t *testing.T) {
  95. users := []int64{2}
  96. // var permissions []int64
  97. err2 := newService.UpdateAdminRole(&pb.UpdateAdminRoleRequest{
  98. RoleId: 3,
  99. Users: users,
  100. })
  101. fmt.Println(err2)
  102. })
  103. t.Run("初始化配置", func(t *testing.T) {
  104. // []*auth.Rule
  105. roles := make([]req.AdminRole, 0)
  106. db.Model(&req.AdminRole{}).Where("status = ?", pb.StatusEnum_ENABLED).Preload("Permissions", "status = ?", pb.StatusEnum_ENABLED).Find(&roles)
  107. })
  108. // user, err := repo.AdminLogin(loginRequest)
  109. // 断言期望的结果
  110. // assert.NoError(t, err)
  111. // assert.NotNil(t, user)
  112. // assert.Equal(t, loginRequest.Username, user.Username)
  113. }
  114. func UpdateRulesItems(roles []req.AdminRole) []*auth.Rule {
  115. rules := make([]*auth.Rule, 0)
  116. for _, role := range roles {
  117. for _, permission := range role.Permissions {
  118. fmt.Println(fmt.Sprintf("%+v", auth.Rule{
  119. ID: uuid.New().String(),
  120. Scope: role.Name,
  121. Priority: 1,
  122. }))
  123. fmt.Println(fmt.Sprintf("%+v", auth.Resource{
  124. Name: "authorizationservice",
  125. Type: "user",
  126. Endpoint: permission.Endpoint,
  127. }))
  128. rules = append(rules, &auth.Rule{
  129. Resource: &auth.Resource{
  130. Name: "authorizationservice",
  131. Type: "user",
  132. Endpoint: permission.Endpoint,
  133. },
  134. ID: uuid.New().String(),
  135. Scope: role.Name,
  136. Priority: 1,
  137. })
  138. }
  139. }
  140. return rules
  141. }