Files
youle_cocos/cocoscreator_projects/framework-tests/config/remote-config.test.ts
T

42 lines
1.7 KiB
TypeScript

import { readFileSync } from 'node:fs';
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { parseUrlServers } from '../../YouleNexus/assets/framework/config/remote-config.ts';
const single = JSON.parse(readFileSync(
new URL('../fixtures/contracts/remote-config-single.json', import.meta.url),
'utf8',
)) as unknown;
const array = JSON.parse(readFileSync(
new URL('../fixtures/contracts/remote-config-array.json', import.meta.url),
'utf8',
)) as unknown;
test('parseUrlServers:读取 data.urlserver 字符串并补 ws://', () => {
assert.deepEqual(parseUrlServers(single), ['ws://10.0.0.1:3088']);
});
test('parseUrlServers:读取 data.urlserver 数组并保留已有 wss://', () => {
assert.deepEqual(parseUrlServers(array), ['ws://10.0.0.1:3088', 'wss://backup.example/ws']);
});
test('parseUrlServers:拒绝旧的 *_server_tcp 字段', () => {
assert.throws(
() => parseUrlServers({ data: { player_server_tcp: 'wrong:1' } }),
/data\.urlserver/,
);
});
test('parseUrlServers:保留原顺序和重复项,并冻结结果', () => {
const servers = parseUrlServers({ data: { urlserver: ['same:1', 'same:1', 'ws://last:2'] } });
assert.deepEqual(servers, ['ws://same:1', 'ws://same:1', 'ws://last:2']);
assert.equal(Object.isFrozen(servers), true);
});
test('parseUrlServers:拒绝空字符串、空数组和非字符串数组项', () => {
assert.throws(() => parseUrlServers({ data: { urlserver: '' } }), /data\.urlserver/);
assert.throws(() => parseUrlServers({ data: { urlserver: [] } }), /data\.urlserver/);
assert.throws(() => parseUrlServers({ data: { urlserver: ['ok:1', ''] } }), /data\.urlserver/);
assert.throws(() => parseUrlServers({ data: { urlserver: ['ok:1', 2] } }), /data\.urlserver/);
});