83 lines
3.4 KiB
Markdown
83 lines
3.4 KiB
Markdown
# 七日签到单账号快速测试
|
||
|
||
## 安全配置
|
||
|
||
只在测试环境发布 `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`。
|