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'), '临时关闭验证码后禁止再拉取 captcha' ); assert.ok(!form.includes('captchaId'), '临时关闭验证码后禁止提交 captchaId'); assert.ok(!form.includes('verifyCode'), '临时关闭验证码后禁止提交 verifyCode'); assert.ok(!form.includes('login-form-captcha'), '登录表单不得再渲染验证码区域'); assert.ok(!form.includes('/api/user/login'), '禁止再走 Arco Mock 登录'); assert.ok(!/\bany\b/.test(form), '严禁 any'); const banner = read('src/pages/login/banner.tsx'); assert.ok(!banner.includes('IconGlobal'), '登录页必须使用 Arco 官方存在的图标'); }); 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"), '入口必须启用请求拦截器' ); assert.ok(!main.includes("./mock"), '入口禁止加载 Mock.js'); assert.ok( main.includes('/api/admin/base/comm/person'), '用户信息必须请求 Cool-Admin person' ); assert.ok(!main.includes('/api/user/userInfo'), '禁止再读 Mock userInfo'); }); 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'); });