62 lines
3.2 KiB
TypeScript
62 lines
3.2 KiB
TypeScript
import test from 'node:test'
|
||
import assert from 'node:assert/strict'
|
||
import { readSource } from './helpers.ts'
|
||
import { whitelistStatusMeta } from '../src/pages/shop/shop-key-model.ts'
|
||
|
||
// module 13 task 262:店铺密钥页对齐 admin panel-shop-keys(三态白名单药丸+悬停详情、
|
||
// 修改时间列、编辑令牌留空沿用原令牌、创建/删除文案)。
|
||
|
||
test('test_task_262_shop_keys_normal_primary_path', () => {
|
||
// 正常主路径:白名单三态文案对齐 admin(ALLOWED 正常 / BLOCKED 未加白名单 / UNKNOWN 未检测)。
|
||
assert.equal(whitelistStatusMeta('ALLOWED').label, '正常')
|
||
assert.equal(whitelistStatusMeta('BLOCKED').label, '未加白名单')
|
||
assert.equal(whitelistStatusMeta('UNKNOWN').label, '未检测')
|
||
assert.equal(whitelistStatusMeta('ALLOWED').tag, 'success')
|
||
assert.equal(whitelistStatusMeta('BLOCKED').tag, 'danger')
|
||
assert.equal(whitelistStatusMeta('UNKNOWN').tag, 'info')
|
||
})
|
||
|
||
test('test_task_262_shop_keys_normal_variant_input', () => {
|
||
// 正常变体:未知/空状态兜底为「未检测」。
|
||
assert.equal(whitelistStatusMeta('X').label, '未检测')
|
||
assert.equal(whitelistStatusMeta(undefined as never).label, '未检测')
|
||
})
|
||
|
||
test('test_task_262_shop_keys_normal_repeated_operation_is_idempotent', () => {
|
||
assert.deepEqual(whitelistStatusMeta('ALLOWED'), whitelistStatusMeta('ALLOWED'))
|
||
assert.deepEqual(whitelistStatusMeta('UNKNOWN'), whitelistStatusMeta(null as never))
|
||
})
|
||
|
||
test('test_task_262_shop_keys_boundary_empty_input', () => {
|
||
const page = readSource('src/pages/shop/ShopKeysPage.vue')
|
||
assert.match(page, /whitelistStatusMeta|whitelistStatus/, '页面需用统一白名单状态元数据')
|
||
assert.match(page, /ipWhitelistCheckedAt|ipWhitelistMessage/, '悬停详情需展示检测时间/消息')
|
||
assert.match(page, /formatDateTime/, '修改/创建时间走统一时间格式')
|
||
})
|
||
|
||
test('test_task_262_shop_keys_boundary_single_item', () => {
|
||
// 编辑令牌留空语义:打开编辑不泄露明文,留空提交沿用原令牌。
|
||
const page = readSource('src/pages/shop/ShopKeysPage.vue')
|
||
assert.match(page, /originalToken|沿用|留空/, '编辑应有“留空沿用原令牌”语义')
|
||
})
|
||
|
||
test('test_task_262_shop_keys_boundary_limit_or_missing_field', () => {
|
||
const page = readSource('src/pages/shop/ShopKeysPage.vue')
|
||
assert.match(page, /updatedAt/, '需含修改时间列')
|
||
assert.match(page, /创建时间|创建/, '保留创建时间列')
|
||
})
|
||
|
||
test('test_task_262_shop_keys_invalid_input_rejected', () => {
|
||
// 删除/创建校验文案对齐 admin。
|
||
const page = readSource('src/pages/shop/ShopKeysPage.vue')
|
||
assert.match(page, /确定删除店铺密钥/, '删除确认需含“确定删除店铺密钥”')
|
||
assert.match(page, /请完整填写紫鸟账号名称、紫鸟令牌|紫鸟令牌不能为空/, '需有创建校验提示')
|
||
})
|
||
|
||
test('test_task_262_shop_keys_dependency_failure_returns_actionable_message', () => {
|
||
// 掩码展示不泄露全量;令牌输入归一(去 Bearer)。
|
||
const page = readSource('src/pages/shop/ShopKeysPage.vue')
|
||
assert.match(page, /mask|maskToken|掩码/, '令牌列需掩码展示')
|
||
assert.match(page, /normalizeZiniaoToken|Bearer/, '令牌提交前去除 Bearer 前缀')
|
||
})
|