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 前缀') })