feat(admin-workplace): 工作台业务概览真实对接与全端认证集成 (更新远程代码仓配置与测试全绿)

这个提交包含在:
wikiboss
2026-09-21 09:22:14 +08:00
父节点 8c003b70cd
当前提交 e5c79082d3
共有 20 个文件被更改,包括 1452 次插入 和 143 次删除

查看文件

@@ -0,0 +1,55 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import fs from 'node:fs';
import path from 'path';
import { fileURLToPath } from 'node:url';
const adminRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
function read(rel: string): string {
return fs.readFileSync(path.join(adminRoot, rel), 'utf8');
}
test('1. 登录必须对接 Cool-Admin 开放接口并携带验证码', () => {
const form = read('src/pages/login/form.tsx');
assert.ok(
form.includes('/api/admin/base/open/login'),
'登录必须请求 /api/admin/base/open/login'
);
assert.ok(
form.includes('/api/admin/base/open/captcha'),
'登录必须拉取 /api/admin/base/open/captcha'
);
assert.ok(form.includes('captchaId'), '登录必须提交 captchaId');
assert.ok(form.includes('verifyCode'), '登录必须提交 verifyCode');
assert.ok(!form.includes('/api/user/login'), '禁止再走 Arco Mock 登录');
assert.ok(!/\bany\b/.test(form), '严禁 any');
});
test('2. axios 必须自动附带 Cool-Admin Authorization', () => {
const request = read('src/utils/setupRequest.ts');
assert.ok(request.includes('Authorization'), '必须写入 Authorization');
assert.ok(request.includes('getAdminToken'), '必须读取已保存的 token');
const main = read('src/main.tsx');
assert.ok(
main.includes("./utils/setupRequest"),
'入口必须启用请求拦截器'
);
});
test('3. 登录态必须同时校验 userStatus 与 JWT', () => {
const checkLogin = read('src/utils/checkLogin.tsx');
assert.ok(checkLogin.includes('getAdminToken'), '未持有 token 不得视为已登录');
const tokenUtil = read('src/utils/auth-token.ts');
assert.ok(tokenUtil.includes('adminToken'), '必须持久化 adminToken');
assert.ok(tokenUtil.includes('adminRefreshToken'), '必须持久化 refreshToken');
});
test('4. 登录文案必须提示真实超管密码并提供验证码词条', () => {
const locale = read('src/pages/login/locale/index.ts');
assert.ok(locale.includes('123456'), '占位提示必须是 Cool-Admin 默认密码 123456');
assert.ok(locale.includes('login.form.captcha.placeholder'));
assert.ok(locale.includes('login.form.captcha.errMsg'));
});