server/laf-cloud/signInActivity.TESTING.md

83 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 七日签到单账号快速测试
## 安全配置
只在测试环境发布 `signInTestAdmin`,并在 Laf 应用环境变量中设置一个高强度随机值:
```text
SIGN_IN_TEST_ADMIN_TOKEN=<随机管理密钥>
```
环境变量未配置或请求密钥不匹配时,接口完全不可用。不要把该密钥写入前端代码,也不要在正式环境发布此函数。
接口使用 `POST /signInTestAdmin` 和 `application/x-www-form-urlencoded`。
公共参数:
| 参数 | 说明 |
| --- | --- |
| `adminToken` | 与环境变量 `SIGN_IN_TEST_ADMIN_TOKEN` 相同 |
| `uid` | 唯一测试账号的用户 `_id` |
| `action` | `inspect`、`reset`、`set_level` 或 `prepare` |
## 操作接口
### 查看当前测试状态
```text
action=inspect&uid=<uid>&adminToken=<token>
```
返回玩家 `levelAmount`、`signInActivity`、领取数量和领取记录。
### 清空签到状态
```text
action=reset&uid=<uid>&adminToken=<token>
```
清空该账号的 `users.signInActivity` 和所有 `sign_in_activity_claims` 记录,不修改关卡和资产。
### 设置测试关卡
```text
action=set_level&uid=<uid>&levelAmount=23&adminToken=<token>
```
只修改 `users.levelAmount`,不修改签到状态和资产。
### 准备测试场景
```text
action=prepare&uid=<uid>&scenario=<场景>&adminToken=<token>
```
| scenario | 准备结果 | 下一步验证 |
| --- | --- | --- |
| `locked` | 关卡设为门槛减 1,清空活动和领取记录 | 请求活动信息应返回 `data: false` |
| `eligible` | 关卡设为门槛,清空活动和领取记录 | 请求活动信息应创建活动并返回奖励列表 |
| `day_1_ready` | 活动已开启且尚未领取 | 领取 Day 1 |
| `day_2_ready` | 已预置 Day 1 历史记录 | 领取 Day 2 |
| `day_3_ready` | 已预置 Day 1~2 历史记录 | 领取 Day 3 |
| `day_4_ready` | 已预置 Day 1~3 历史记录 | 领取 Day 4 |
| `day_5_ready` | 已预置 Day 1~4 历史记录 | 领取 Day 5 |
| `day_6_ready` | 已预置 Day 1~5 历史记录 | 领取 Day 6 |
| `day_7_ready` | 已预置 Day 1~6 历史记录 | 领取 Day 7 并验证完成状态和猫 12 |
| `claimed_today` | 已预置今天的 Day 1 领取记录 | 再次领取应返回“今天已经领取” |
| `expired` | 活动结束时间设为当前自然日零点 | 活动状态应为 `expired`,领取应失败 |
| `completed` | 已预置七天领取记录及完成时间 | 活动状态应为 `completed`,领取应失败 |
每次 `prepare` 都会先删除该测试账号原有的签到领取记录,并覆盖该账号的签到活动状态,但不会发放或扣除任何实际资产。
## 推荐测试顺序
`signInActivityInfo` 现在会自动领取。以下每次准备 `day_N_ready` 后,直接请求活动信息,检查 `todayClaim.rewardDay`、奖励内容和 `canClaim: false`。当天再次请求应返回相同 `claimId`,前端不得重复发奖;完成和过期场景不得新增记录。检查数据库状态可使用 `signInTestAdmin inspect`,避免活动信息请求触发领取。
1. `prepare locked`,验证未达标不展示。
2. `prepare eligible`,验证首次请求创建活动且重复请求不重置时间。
3. 依次使用 `day_1_ready` 至 `day_7_ready`,逐档验证前端奖励。
4. `prepare claimed_today`,验证重复点击和重复请求。
5. `prepare expired`,验证过期页面和禁止领取。
6. `prepare completed`,验证完成页面和禁止领取。
7. 测试结束执行 `reset`。