| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package user
- import (
- "testing"
- "perms-system-server/internal/consts"
- "perms-system-server/internal/svc"
- "perms-system-server/internal/testutil"
- "perms-system-server/internal/testutil/ctxhelper"
- "perms-system-server/internal/types"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- // ---------------------------------------------------------------------------
- // 覆盖目标:审计 L-1 修复 —— 管理员代填初始密码创建的用户必须把 MustChangePassword 默认为 Yes。
- // 修复前默认 No,使得"管理员口头下发 + 长期不改 + 口令库泄露即广义失陷"成为系统性弱点。
- // 本用例锚定:"req 未显式传入 mustChangePassword 时,落盘必须是 Yes"。
- // 因为 CreateUserReq 并不暴露 MustChangePassword 字段(没有 override 入口),该契约既是安全下限也是产品基线。
- // ---------------------------------------------------------------------------
- // TC-0818: L-1 —— 超管创建用户时,MustChangePassword 默认落盘为 Yes。
- func TestCreateUser_DefaultsMustChangePasswordToYes(t *testing.T) {
- ctx := ctxhelper.SuperAdminCtx()
- svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
- conn := testutil.GetTestSqlConn()
- username := "lcp_" + testutil.UniqueId()
- resp, err := NewCreateUserLogic(ctx, svcCtx).CreateUser(&types.CreateUserReq{
- Username: username,
- Password: "InitPass@123",
- Nickname: "初始口令校验",
- })
- require.NoError(t, err)
- require.NotNil(t, resp)
- t.Cleanup(func() { testutil.CleanTable(ctx, conn, "`sys_user`", resp.Id) })
- u, err := svcCtx.SysUserModel.FindOne(ctx, resp.Id)
- require.NoError(t, err)
- assert.Equal(t, int64(consts.MustChangePasswordYes), u.MustChangePassword,
- "L-1 基线:管理员代填初始密码的用户必须被强制下次登录改密,落盘为 Yes")
- }
|