dieya-app-portal/tests/apps.test.mjs

38 lines
2.4 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { applications, filterApplications, validateApplications } from '../src/apps.mjs';
test('八个业务地址与用户给定映射一致,正式和测试风险入口不混淆', () => {
const expected = {
'碟雅运营AI中心': 'https://aiagent.dieya.net.cn/',
'碟雅AI中心测试版': 'https://aiagent1.dieya.net.cn/',
'需求收集': 'http://demand.dieya.net.cn/',
'财务AI助手测试': 'http://finance-test.dieya.net.cn/',
'成本识别': 'http://cost.dieya.net.cn/',
'违禁词助手': 'http://prohibite.dieya.net.cn/',
'风险预警测试': 'http://risk.dieya.net.cn/',
'风险预警': 'http://risk-prod.dieya.net.cn/'
};
assert.deepEqual(Object.fromEntries(applications.map(app => [app.name, app.url])), expected);
assert.equal(validateApplications(applications), true);
assert.equal(filterApplications(applications, { environment: 'production' }).length, 5);
assert.equal(filterApplications(applications, { environment: 'test' }).length, 3);
});
test('分类、中文或域名搜索和环境条件同时生效', () => {
assert.deepEqual(filterApplications(applications, { category: 'risk', environment: 'production' }).map(app => app.id), ['risk']);
assert.equal(filterApplications(applications, { query: ' 风险预警 ' }).length, 2);
assert.deepEqual(filterApplications(applications, { query: 'AIAGENT1.DIEYA' }).map(app => app.id), ['ai-center-test']);
assert.equal(filterApplications(applications, { query: '不存在的应用' }).length, 0);
});
test('常用列表与环境和关键词组合筛选', () => {
const options = { category: 'favorites', favorites: ['cost', 'finance-test'] };
assert.equal(filterApplications(applications, options).length, 2);
assert.deepEqual(filterApplications(applications, { ...options, environment: 'test', query: '财务' }).map(app => app.id), ['finance-test']);
assert.equal(filterApplications(applications, { category: 'favorites', favorites: [] }).length, 0);
});
test('拒绝非网页链接、重复标识和不完整配置', () => {
assert.throws(() => validateApplications([{ ...applications[0], url: 'javascript:alert(1)' }]));
assert.throws(() => validateApplications([applications[0], applications[0]]));
assert.throws(() => validateApplications([{ ...applications[0], environment: 'unknown' }]));
});