fix(verify): e2e 班级码用后还原,避免把演示实例改成随机码
问题: verify:e2e 的班级账号段会临时把班级码改成 E2E####,结束时只还原了密码,
导致演示实例(以及随后跑的打包产物冒烟)拿着文档默认码 G101 登录被 401。
修复:
- e2e 开始前记录该班原本的班级码,结束时连码带密码一起还原
- 新增断言'清理:班级码恢复为验证前的原值(不污染演示数据)',并断言用原码仍可登录
- README 权限矩阵段落补充需求 6/7 的成绩导入取舍说明与放开范围(6 处改动清单)
验收: verify:e2e 126/126(结束后实例仍为 G101/123456)
打包产物(portable.exe) 47/47, packaged=true, login=高一(1)班 classSession=true
This commit is contained in:
1 parent
b07ee4f8d7
commit
910e520d09
2 files changed
+39
-9
No files matched your search
@@ -1237,6 +1237,9 @@ async function main() {
|
||||
// ---------------------------------------------------------------- 9. 班级账号(学生端主体 = 班级)
|
||||
// 设计:班级码 + 班级密码 → classSession 的 JWT;个人数据(作业完成 / 通知已读 / 成绩)
|
||||
// 由服务端按"全班"范围读写,个人学生不再是登录主体(个人账号接口仍向后兼容)。
|
||||
// 注意:本段会临时改动班级码,结束时必须恢复(否则演示实例会留下 E2E#### 这种随机码)。
|
||||
const adminClassList = await api('/classes', { token: adminToken });
|
||||
const originalClassAccount = (adminClassList.payload?.data ?? []).find((item) => item.id === classId) ?? {};
|
||||
const classCode = `E2E${Date.now().toString(36).slice(-4).toUpperCase()}`;
|
||||
const setAccount = await api(`/classes/${classId}/class-account`, {
|
||||
method: 'PATCH',
|
||||
@@ -1458,7 +1461,7 @@ async function main() {
|
||||
`status=${occupiedCode.status} message=${occupiedCode.payload?.message ?? ''}`,
|
||||
);
|
||||
|
||||
// 清理:删除回归用的通知 / 作业 / 成绩,并把班级密码恢复为默认
|
||||
// 清理:删除回归用的通知 / 作业 / 成绩,把班级码恢复为验证前的原值,密码恢复为默认
|
||||
if (classNameNoticeId) {
|
||||
await api(`/notifications/${classNameNoticeId}`, { method: 'DELETE', token: teacherToken });
|
||||
}
|
||||
@@ -1468,11 +1471,28 @@ async function main() {
|
||||
if (classNameGrade.payload?.data?.id) {
|
||||
await api(`/grades/${classNameGrade.payload.data.id}`, { method: 'DELETE', token: adminToken });
|
||||
}
|
||||
await api(`/classes/${classId}/class-account`, {
|
||||
|
||||
const restoreAccount = await api(`/classes/${classId}/class-account`, {
|
||||
method: 'PATCH',
|
||||
token: adminToken,
|
||||
body: { password: '123456' },
|
||||
body: {
|
||||
...(originalClassAccount.code ? { code: originalClassAccount.code } : {}),
|
||||
password: '123456',
|
||||
},
|
||||
});
|
||||
const restoredLogin = originalClassAccount.code
|
||||
? await api('/auth/class-login', {
|
||||
method: 'POST',
|
||||
body: { code: originalClassAccount.code, password: '123456' },
|
||||
})
|
||||
: { status: 200 };
|
||||
record(
|
||||
'清理:班级码恢复为验证前的原值(不污染演示数据)',
|
||||
restoreAccount.status === 200 &&
|
||||
(!originalClassAccount.code || restoreAccount.payload?.data?.code === originalClassAccount.code) &&
|
||||
restoredLogin.status === 200,
|
||||
`原值=${originalClassAccount.code || '(未设置)'} 还原后=${restoreAccount.payload?.data?.code ?? '-'} 登录=${restoredLogin.status}`,
|
||||
);
|
||||
|
||||
socket.close();
|
||||
|
||||
|
||||
Reference in new issue
Block a user