Skip to content

Latest commit

 

History

History
75 lines (60 loc) · 2.91 KB

task-verification-task-21.md

File metadata and controls

75 lines (60 loc) · 2.91 KB

TASK 21 验证清单

任务

  • TASK: 登录请求 DTO 与参数校验 / Login request DTO and validation
  • 父 issue: #5
  • 对应实现文件:
    • iam-auth-service/src/main/java/com/auth/auth/dto/PasswordLoginRequest.java

需求对齐验证

  • 目标对齐:
    • 已补充密码登录请求 DTO 的字段约束
    • 已明确设备信息 deviceInfo 的结构
    • 已将基础参数校验下沉到 Bean Validation
  • 范围对齐:
    • 本次覆盖 tenantCode、appCode、loginName、password、captchaToken、captchaCode、deviceInfo
    • 本次覆盖 deviceId、deviceType、userAgent
    • 本次不包含租户查询、应用查询、账号状态校验、密码比对、token 生成
  • 输入输出对齐:
    • 输入:POST /api/iam/auth/login/password 的请求体
    • 输出:非法参数进入统一参数异常返回链路
  • Acceptance 对齐:
    • “登录请求对象结构稳定”:已通过 DTO 字段收敛和长度/格式约束落实
    • “参数缺失和非法值能统一返回”:当前依赖 @Valid + 全局异常处理链路承接

行为验证

成功场景

  • 合法 tenantCode / appCode 可通过格式校验
  • 合法 loginName / password 可通过非空与长度校验
  • 合法 deviceInfo.deviceType 可通过非空与格式校验
  • 可选字段 captchaToken、captchaCode、deviceId、userAgent 在长度合法时允许为空或缺省

失败场景

  • tenantCode 为空时应命中必填校验
  • appCode 为空时应命中必填校验
  • loginName 为空时应命中必填校验
  • password 为空时应命中必填校验
  • deviceInfo 缺失时应命中必填校验
  • deviceInfo.deviceType 为空时应命中必填校验
  • tenantCode / appCode 含非法字符时应命中格式校验
  • deviceType 含非法字符时应命中格式校验
  • 各字段长度超过上限时应命中长度校验

边界场景

  • tenantCode / appCode 支持单字符合法值
  • tenantCode / appCode 支持下划线和中划线
  • loginName / password 上限 128 字符
  • captchaCode 上限 16 字符
  • userAgent 上限 512 字符

回归验证

  • 不影响现有控制器方法签名:
    • AuthController.loginByPassword(@Valid @RequestBody PasswordLoginRequest request)
  • 不影响现有统一异常处理入口:
    • MethodArgumentNotValidException
    • BindException
    • HttpMessageNotReadableException
  • 不影响当前 mock 登录分支逻辑:
    • locked
    • expired
    • bad-password
  • 不影响已完成的编译链路:
    • mvnw.cmd -pl iam-auth-service -am compile 已通过

当前结论

  • 这个 TASK 当前已经完成了“DTO 结构收敛”和“参数校验规则落地”两部分
  • “统一返回”这一点当前是通过已有全局异常处理链路承接,不是本次单独新增
  • 若要把该 TASK 验证做得更完整,下一步建议补接口级测试用例,覆盖缺参、非法字符、超长值三类场景