38 lines
2.4 KiB
JavaScript
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' }]));
|
|
});
|