MatchMaster/tools/coin-madness/check-request-environment.cjs

26 lines
1.7 KiB
JavaScript

const fs = require('fs'), ts = require('typescript'), assert = require('node:assert/strict');
const source = fs.readFileSync('assets/Script/module/Pay/Utils.ts', 'utf8').split(' static getGacha')[0] + '\n}';
const code = ts.transpileModule(source, { compilerOptions: { target: ts.ScriptTarget.ES2017, module: ts.ModuleKind.CommonJS } }).outputText;
let version, session; const requests = [];
const cc = { fx: { GameTool: { getWechatGameVersion: () => version }, GameConfig: { GM_INFO: { token: 'test-token' } } },
loader: { getXMLHttpRequest: () => ({ open(method, url) { this.url = url; }, setRequestHeader() {}, send(body) { requests.push({ url: this.url, body }); } }) } };
const out = {};
new Function('require', 'exports', 'cc', 'wx', code)(() => ({}), out, cc,
{ openCustomerServiceConversation: options => { session = JSON.parse(options.sessionFrom); } });
cc.fx.GameTool.shushu_Track = () => {};
const Utils = out.default;
for (version of ['开发版', '体验版', '正式版']) {
requests.length = 0;
Utils.POST('login', {}, () => {});
Utils.POSTJSON('goldMiner/index', { action: 'info' }, () => {});
const expected = version === '正式版' ? Utils.httpip : Utils.testHttpip;
assert.equal(requests[0].url, expected + 'login');
assert.equal(requests[1].url, expected + 'goldMiner/index');
assert.equal(JSON.parse(requests[1].body).token, 'test-token');
let created;
Utils.GoKEFu({ payment_name: 'gold_miner_1', payment_count: 1, price: 600 }, () => {}, order => created = order);
assert.equal(session.outTradeNo, created);
assert(created.startsWith(version === '正式版' ? 'wcx_' : 'wct_'));
}
console.log('PASS: login and activity requests share the same server in all three release environments.');