import test from 'node:test' import assert from 'node:assert/strict' import { readSource } from './helpers.ts' import { isForbidden, isKicked, isUnauthorized } from '../src/api/envelope.ts' test('单设备登录:4011 只认业务码,不被 401/403 判定吞掉', () => { assert.equal(isKicked({ code: 4011 }), true) assert.equal(isKicked({ code: 401 }), false) assert.equal(isKicked({ status: 4011 }), false) assert.equal(isKicked(null), false) assert.equal(isKicked('4011'), false) // 4011 与普通 401/403 是两种处理(提示"已在其他设备登录" vs 跳登录页),不能误判 assert.equal(isUnauthorized({ code: 4011 }), false) assert.equal(isForbidden({ code: 4011 }), false) }) test('单设备登录:http 拦截器接线(两分支先判 4011,跳带 kicked 标记的登录页)', () => { const http = readSource('src/api/http.ts') assert.match(http, /isKicked/) assert.match(http, /\/admin-vue\/login\?kicked=1/) }) test('单设备登录:登录页显示被顶下线提示', () => { const page = readSource('src/pages/login/LoginPage.vue') assert.match(page, /kickedNotice/) assert.match(page, /该账号已在其他设备登录/) assert.match(page, /kicked-msg/) })