roleListLogic_test.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package role
  2. import (
  3. "testing"
  4. "time"
  5. roleModel "perms-system-server/internal/model/role"
  6. "perms-system-server/internal/svc"
  7. "perms-system-server/internal/testutil"
  8. "perms-system-server/internal/testutil/ctxhelper"
  9. "perms-system-server/internal/types"
  10. "github.com/stretchr/testify/assert"
  11. "github.com/stretchr/testify/require"
  12. )
  13. // TC-0122: 正常查询
  14. func TestRoleList_Normal(t *testing.T) {
  15. ctx := ctxhelper.SuperAdminCtx()
  16. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  17. conn := testutil.GetTestSqlConn()
  18. now := time.Now().Unix()
  19. pc := testutil.UniqueId()
  20. var roleIds []int64
  21. for i := 0; i < 3; i++ {
  22. res, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  23. ProductCode: pc, Name: testutil.UniqueId(), Status: 1,
  24. PermsLevel: int64(i + 1), CreateTime: now, UpdateTime: now,
  25. })
  26. require.NoError(t, err)
  27. id, _ := res.LastInsertId()
  28. roleIds = append(roleIds, id)
  29. }
  30. t.Cleanup(func() {
  31. testutil.CleanTable(ctx, conn, "`sys_role`", roleIds...)
  32. })
  33. logic := NewRoleListLogic(ctx, svcCtx)
  34. resp, err := logic.RoleList(&types.RoleListReq{
  35. ProductCode: pc, Page: 1, PageSize: 10,
  36. })
  37. require.NoError(t, err)
  38. assert.Equal(t, int64(3), resp.Total)
  39. items := resp.List.([]types.RoleItem)
  40. assert.Len(t, items, 3)
  41. }
  42. // TC-0122: 正常查询
  43. func TestRoleList_DefaultPagination(t *testing.T) {
  44. ctx := ctxhelper.SuperAdminCtx()
  45. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  46. conn := testutil.GetTestSqlConn()
  47. now := time.Now().Unix()
  48. pc := testutil.UniqueId()
  49. res, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  50. ProductCode: pc, Name: testutil.UniqueId(), Status: 1, PermsLevel: 1,
  51. CreateTime: now, UpdateTime: now,
  52. })
  53. require.NoError(t, err)
  54. roleId, _ := res.LastInsertId()
  55. t.Cleanup(func() {
  56. testutil.CleanTable(ctx, conn, "`sys_role`", roleId)
  57. })
  58. logic := NewRoleListLogic(ctx, svcCtx)
  59. resp, err := logic.RoleList(&types.RoleListReq{
  60. ProductCode: pc,
  61. })
  62. require.NoError(t, err)
  63. assert.Equal(t, int64(1), resp.Total)
  64. }
  65. // TC-0123: pageSize超过上限
  66. func TestRoleList_PageSizeExceedsLimit(t *testing.T) {
  67. ctx := ctxhelper.SuperAdminCtx()
  68. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  69. conn := testutil.GetTestSqlConn()
  70. now := time.Now().Unix()
  71. pc := testutil.UniqueId()
  72. res, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  73. ProductCode: pc, Name: testutil.UniqueId(), Status: 1, PermsLevel: 1,
  74. CreateTime: now, UpdateTime: now,
  75. })
  76. require.NoError(t, err)
  77. roleId, _ := res.LastInsertId()
  78. t.Cleanup(func() {
  79. testutil.CleanTable(ctx, conn, "`sys_role`", roleId)
  80. })
  81. logic := NewRoleListLogic(ctx, svcCtx)
  82. resp, err := logic.RoleList(&types.RoleListReq{
  83. ProductCode: pc, Page: 1, PageSize: 200,
  84. })
  85. require.NoError(t, err)
  86. assert.Equal(t, int64(1), resp.Total)
  87. }
  88. // TC-1308: 非超管不传productCode时从JWT获取
  89. func TestRoleList_NonSuperAdminUsesJWTProductCode(t *testing.T) {
  90. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  91. conn := testutil.GetTestSqlConn()
  92. now := time.Now().Unix()
  93. pc := testutil.UniqueId()
  94. res, err := svcCtx.SysRoleModel.Insert(ctxhelper.SuperAdminCtx(), &roleModel.SysRole{
  95. ProductCode: pc, Name: testutil.UniqueId(), Status: 1, PermsLevel: 5,
  96. CreateTime: now, UpdateTime: now,
  97. })
  98. require.NoError(t, err)
  99. roleId, _ := res.LastInsertId()
  100. t.Cleanup(func() {
  101. testutil.CleanTable(ctxhelper.SuperAdminCtx(), conn, "`sys_role`", roleId)
  102. })
  103. ctx := ctxhelper.AdminCtx(pc)
  104. logic := NewRoleListLogic(ctx, svcCtx)
  105. resp, err := logic.RoleList(&types.RoleListReq{
  106. Page: 1,
  107. PageSize: 10,
  108. })
  109. require.NoError(t, err)
  110. assert.Equal(t, int64(1), resp.Total)
  111. }
  112. // TC-1309: 非超管传了其他产品code时被忽略
  113. func TestRoleList_NonSuperAdminIgnoresReqProductCode(t *testing.T) {
  114. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  115. conn := testutil.GetTestSqlConn()
  116. now := time.Now().Unix()
  117. pc := testutil.UniqueId()
  118. res, err := svcCtx.SysRoleModel.Insert(ctxhelper.SuperAdminCtx(), &roleModel.SysRole{
  119. ProductCode: pc, Name: testutil.UniqueId(), Status: 1, PermsLevel: 5,
  120. CreateTime: now, UpdateTime: now,
  121. })
  122. require.NoError(t, err)
  123. roleId, _ := res.LastInsertId()
  124. t.Cleanup(func() {
  125. testutil.CleanTable(ctxhelper.SuperAdminCtx(), conn, "`sys_role`", roleId)
  126. })
  127. ctx := ctxhelper.AdminCtx(pc)
  128. logic := NewRoleListLogic(ctx, svcCtx)
  129. resp, err := logic.RoleList(&types.RoleListReq{
  130. ProductCode: "other_product",
  131. Page: 1,
  132. PageSize: 10,
  133. })
  134. require.NoError(t, err)
  135. assert.Equal(t, int64(1), resp.Total)
  136. }
  137. // TC-1310: 超管不传productCode时返回全量数据
  138. func TestRoleList_SuperAdminNoProductCodeReturnsAll(t *testing.T) {
  139. ctx := ctxhelper.SuperAdminCtx()
  140. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  141. conn := testutil.GetTestSqlConn()
  142. now := time.Now().Unix()
  143. pc1 := testutil.UniqueId()
  144. pc2 := testutil.UniqueId()
  145. r1Res, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  146. ProductCode: pc1, Name: testutil.UniqueId(), Status: 1, PermsLevel: 1,
  147. CreateTime: now, UpdateTime: now,
  148. })
  149. require.NoError(t, err)
  150. r1Id, _ := r1Res.LastInsertId()
  151. r2Res, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  152. ProductCode: pc2, Name: testutil.UniqueId(), Status: 1, PermsLevel: 2,
  153. CreateTime: now, UpdateTime: now,
  154. })
  155. require.NoError(t, err)
  156. r2Id, _ := r2Res.LastInsertId()
  157. t.Cleanup(func() {
  158. testutil.CleanTable(ctx, conn, "`sys_role`", r1Id, r2Id)
  159. })
  160. logic := NewRoleListLogic(ctx, svcCtx)
  161. resp, err := logic.RoleList(&types.RoleListReq{
  162. Page: 1,
  163. PageSize: 10000,
  164. })
  165. require.NoError(t, err)
  166. assert.GreaterOrEqual(t, resp.Total, int64(2))
  167. }