updateRoleLogic_test.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package role
  2. import (
  3. "errors"
  4. "testing"
  5. "time"
  6. roleModel "perms-system-server/internal/model/role"
  7. "perms-system-server/internal/response"
  8. "perms-system-server/internal/svc"
  9. "perms-system-server/internal/testutil"
  10. "perms-system-server/internal/testutil/ctxhelper"
  11. "perms-system-server/internal/types"
  12. "github.com/stretchr/testify/assert"
  13. "github.com/stretchr/testify/require"
  14. )
  15. // TC-0120: 正常更新
  16. func TestUpdateRole_Normal(t *testing.T) {
  17. ctx := ctxhelper.SuperAdminCtx()
  18. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  19. conn := testutil.GetTestSqlConn()
  20. now := time.Now().Unix()
  21. pc := testutil.UniqueId()
  22. res, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  23. ProductCode: pc, Name: testutil.UniqueId(), Status: 1, PermsLevel: 1,
  24. CreateTime: now, UpdateTime: now,
  25. })
  26. require.NoError(t, err)
  27. roleId, _ := res.LastInsertId()
  28. t.Cleanup(func() {
  29. testutil.CleanTable(ctx, conn, "`sys_role`", roleId)
  30. })
  31. newName := testutil.UniqueId()
  32. logic := NewUpdateRoleLogic(ctx, svcCtx)
  33. err = logic.UpdateRole(&types.UpdateRoleReq{
  34. Id: roleId,
  35. Name: newName,
  36. Remark: "updated remark",
  37. PermsLevel: 2,
  38. Status: 2,
  39. })
  40. require.NoError(t, err)
  41. updated, err := svcCtx.SysRoleModel.FindOne(ctx, roleId)
  42. require.NoError(t, err)
  43. assert.Equal(t, newName, updated.Name)
  44. assert.Equal(t, "updated remark", updated.Remark)
  45. assert.Equal(t, int64(2), updated.PermsLevel)
  46. assert.Equal(t, int64(2), updated.Status)
  47. }
  48. // TC-0121: 不存在
  49. func TestUpdateRole_NotFound(t *testing.T) {
  50. ctx := ctxhelper.SuperAdminCtx()
  51. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  52. logic := NewUpdateRoleLogic(ctx, svcCtx)
  53. err := logic.UpdateRole(&types.UpdateRoleReq{
  54. Id: 999999999,
  55. Name: "whatever",
  56. PermsLevel: 1,
  57. })
  58. require.Error(t, err)
  59. var ce *response.CodeError
  60. require.True(t, errors.As(err, &ce))
  61. assert.Equal(t, 404, ce.Code())
  62. assert.Equal(t, "角色不存在", ce.Error())
  63. }
  64. // TC-0539: updateRole非管理员拒绝
  65. func TestUpdateRole_MemberRejected(t *testing.T) {
  66. pc := "test_product"
  67. ctx := ctxhelper.MemberCtx(pc)
  68. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  69. conn := testutil.GetTestSqlConn()
  70. now := time.Now().Unix()
  71. roleRes, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  72. ProductCode: pc, Name: testutil.UniqueId(), Status: 1, PermsLevel: 1,
  73. CreateTime: now, UpdateTime: now,
  74. })
  75. require.NoError(t, err)
  76. roleId, _ := roleRes.LastInsertId()
  77. t.Cleanup(func() { testutil.CleanTable(ctx, conn, "`sys_role`", roleId) })
  78. logic := NewUpdateRoleLogic(ctx, svcCtx)
  79. err = logic.UpdateRole(&types.UpdateRoleReq{Id: roleId, Name: "test", PermsLevel: 1})
  80. require.Error(t, err)
  81. var ce *response.CodeError
  82. require.True(t, errors.As(err, &ce))
  83. assert.Equal(t, 403, ce.Code())
  84. }