Files

62 lines
3.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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', () => {
// 正常主路径:白名单三态文案对齐 adminALLOWED 正常 / 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 前缀')
})