setUserPermsAudit_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package user
  2. import (
  3. "errors"
  4. "testing"
  5. "time"
  6. productModel "perms-system-server/internal/model/product"
  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-0734: M-14 修复:产品被禁用时,setUserPerms 应拒绝
  16. func TestSetUserPerms_ProductDisabled(t *testing.T) {
  17. ctx := ctxhelper.SuperAdminCtx()
  18. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  19. conn := testutil.GetTestSqlConn()
  20. now := time.Now().Unix()
  21. code := testutil.UniqueId()
  22. pRes, err := svcCtx.SysProductModel.Insert(ctx, &productModel.SysProduct{
  23. Code: code, Name: "p_" + code, AppKey: code + "_k", AppSecret: "s",
  24. Status: 2, CreateTime: now, UpdateTime: now, // 禁用
  25. })
  26. require.NoError(t, err)
  27. pId, _ := pRes.LastInsertId()
  28. username := testutil.UniqueId()
  29. userId := insertTestUser(t, ctx, username, testutil.HashPassword("pw"))
  30. mId := insertTestMember(t, svcCtx, code, userId)
  31. t.Cleanup(func() {
  32. testutil.CleanTable(ctx, conn, "`sys_product_member`", mId)
  33. testutil.CleanTable(ctx, conn, "`sys_user`", userId)
  34. testutil.CleanTable(ctx, conn, "`sys_product`", pId)
  35. })
  36. adminCtx := ctxhelper.AdminCtx(code)
  37. err = NewSetUserPermsLogic(adminCtx, svcCtx).SetUserPerms(&types.SetPermsReq{
  38. UserId: userId, Perms: nil,
  39. })
  40. require.Error(t, err)
  41. var ce *response.CodeError
  42. require.True(t, errors.As(err, &ce))
  43. assert.Equal(t, 400, ce.Code())
  44. assert.Contains(t, ce.Error(), "禁用")
  45. }
  46. // TC-0735: M-14 修复:产品不存在时拒绝
  47. func TestSetUserPerms_ProductNotFound(t *testing.T) {
  48. ctx := ctxhelper.SuperAdminCtx()
  49. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  50. username := testutil.UniqueId()
  51. userId := insertTestUser(t, ctx, username, testutil.HashPassword("pw"))
  52. conn := testutil.GetTestSqlConn()
  53. t.Cleanup(func() { testutil.CleanTable(ctx, conn, "`sys_user`", userId) })
  54. // 用一个不存在的 productCode
  55. adminCtx := ctxhelper.AdminCtx("non_existent_" + testutil.UniqueId())
  56. err := NewSetUserPermsLogic(adminCtx, svcCtx).SetUserPerms(&types.SetPermsReq{
  57. UserId: userId, Perms: nil,
  58. })
  59. require.Error(t, err)
  60. var ce *response.CodeError
  61. require.True(t, errors.As(err, &ce))
  62. assert.Equal(t, 404, ce.Code())
  63. assert.Contains(t, ce.Error(), "产品不存在")
  64. }