fix bugs
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs';
|
||||
import vm from 'node:vm';
|
||||
|
||||
const root = new URL('../', import.meta.url);
|
||||
const app = fs.readFileSync(new URL('App.vue', root), 'utf8');
|
||||
const method = app.slice(app.indexOf('async writeLog('), app.indexOf('async logout(){'));
|
||||
|
||||
test('actual APP log method routes by token and preserves debugMode gate', async () => {
|
||||
for (const token of ['', null, undefined, 'valid-token']) {
|
||||
const calls = [];
|
||||
const scope = {
|
||||
uni: {getStorageSync: key => key === 'token' ? token : {debugMode: true}},
|
||||
writeDebugLog: async value => calls.push(['private', value]),
|
||||
writePublicDebugLog: async value => calls.push(['public', value]), console,
|
||||
};
|
||||
const {writeLog} = vm.runInNewContext(`({${method}})`, scope);
|
||||
await writeLog('80001', 'LOGIN', 'txn', 'description', null, null, 1, false);
|
||||
assert.equal(calls.length, 1);
|
||||
assert.equal(calls[0][0], token ? 'private' : 'public');
|
||||
assert.equal(calls[0][1].eventCode, 'LOGIN');
|
||||
scope.uni.getStorageSync = key => key === 'token' ? token : {debugMode: false};
|
||||
await writeLog('80001', 'LOGIN', 'txn', 'description', null, null, 1, false);
|
||||
assert.equal(calls.length, 1);
|
||||
}
|
||||
});
|
||||
|
||||
test('API wrappers use public bootstrap routes and preserve refresh protocol', async () => {
|
||||
const calls = [];
|
||||
const scope = {uni: {$u: {http: {post: (...args) => calls.push(args)}}}};
|
||||
function load(file, names) {
|
||||
const source = fs.readFileSync(new URL(file, root), 'utf8').replaceAll('export const ', 'const ');
|
||||
return vm.runInNewContext(`${source}\n;({${names.join(',')}})`, scope);
|
||||
}
|
||||
const common = load('api/commonApi.js', ['getSettings', 'writeDebugLog', 'writePublicDebugLog', 'refreshToken']);
|
||||
const config = load('api/configApi.js', ['getCfgSettingByKey']);
|
||||
const params = {keyName: 'MACAU_STRING'};
|
||||
const options = {custom: {test: true}};
|
||||
common.getSettings(params, options); common.writeDebugLog(params, options);
|
||||
common.writePublicDebugLog(params, options); config.getCfgSettingByKey(params, options);
|
||||
common.refreshToken(params, options);
|
||||
assert.deepEqual(calls.map(call => call[0]), [
|
||||
'/system/sys_setting/get_public_login_settings', '/system/write_log', '/system/write_public_log',
|
||||
'/web/setting/get_public_setting_by_key', '/app/refresh_token?isRenewRefreshToken=false',
|
||||
]);
|
||||
for (const call of calls) { assert.equal(call[1], params); assert.equal(call[2], options); }
|
||||
});
|
||||
Reference in New Issue
Block a user