front/scripts/test-notify-biz.mjs
2026-06-04 19:15:28 +08:00

43 lines
1.9 KiB
JavaScript

import { readFileSync } from 'fs';
import { parseCurlCommand, extractJsonCandidates } from '../src/utils/parseCurl.ts';
import { buildCurlInterfaceFillPayload } from '../src/utils/curlToInterfaceFill.ts';
import {
pickBestJsonBodyText,
parseJsonTextToParameterFlatList,
defaultResolveParameterType,
} from '../src/utils/jsonParameterTree.ts';
import { ContentType } from '../src/constants/itfxEnums.ts';
const curl = readFileSync(new URL('./test-notify-biz.curl', import.meta.url), 'utf8');
const p = parseCurlCommand(curl);
console.log('method', p.method);
console.log('pathname', p.pathname);
console.log('bodyType', p.bodyType);
console.log('queryParams', p.queryParams);
console.log('formBody', p.formBodyParams);
const candidates = extractJsonCandidates(p);
console.log('candidates', candidates.length);
if (candidates[0]) {
const obj = JSON.parse(candidates[0]);
console.log('candidate keys', Object.keys(obj));
console.log('eventTime', obj.eventTime, 'ok', obj.eventTime?.includes('+0800'));
}
const best = pickBestJsonBodyText(candidates, [], { resolveParameterType: defaultResolveParameterType });
if (best) {
const flat = parseJsonTextToParameterFlatList(best, { resolveParameterType: defaultResolveParameterType });
console.log('flat nodes', flat.length, 'names', flat.map((n) => n.name));
}
const payload = buildCurlInterfaceFillPayload(curl);
console.log('contentType', payload.contentType, 'expected Form', ContentType.FormUrlEncoded);
console.log('query', payload.queryParams.map((x) => `${x.name}=${x.value}`));
console.log('bodyForm', payload.bodyFormParams.map((x) => `${x.name}=${x.value}`));
console.assert(
payload.queryParams.some((x) => x.name === 'notifyBizEventDTO' && x.value === '$FromMappingBody'),
'notifyBizEventDTO should stay in Query',
);
console.assert(
!payload.bodyFormParams.some((x) => x.name === 'notifyBizEventDTO'),
'notifyBizEventDTO should NOT be in Body form',
);
console.log('jsonBodies', payload.jsonBodies.length);