49 lines
1.8 KiB
JavaScript
49 lines
1.8 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
|
|
const source = fs.readFileSync('background/steps/gopay-manual-confirm.js', 'utf8');
|
|
const globalScope = {};
|
|
const api = new Function('self', `${source}; return self.MultiPageBackgroundGoPayManualConfirm;`)(globalScope);
|
|
|
|
test('GoPay manual confirm executor publishes pending manual confirmation state for step 7', async () => {
|
|
const stateUpdates = [];
|
|
const broadcasts = [];
|
|
const events = [];
|
|
const executor = api.createGoPayManualConfirmExecutor({
|
|
addLog: async (message, level = 'info') => {
|
|
events.push({ type: 'log', message, level });
|
|
},
|
|
broadcastDataUpdate: (payload) => {
|
|
broadcasts.push(payload);
|
|
},
|
|
chrome: {
|
|
tabs: {
|
|
update: async (tabId, payload) => {
|
|
events.push({ type: 'tab-update', tabId, payload });
|
|
},
|
|
},
|
|
},
|
|
getTabId: async () => 42,
|
|
isTabAlive: async () => true,
|
|
registerTab: async () => {},
|
|
setState: async (payload) => {
|
|
stateUpdates.push(payload);
|
|
},
|
|
});
|
|
|
|
await executor.executeGoPayManualConfirm({ plusCheckoutTabId: 42, plusCheckoutUrl: 'https://chatgpt.com/checkout/openai_llc/session' });
|
|
|
|
assert.equal(stateUpdates.length, 1);
|
|
assert.equal(stateUpdates[0].plusManualConfirmationPending, true);
|
|
assert.equal(stateUpdates[0].plusManualConfirmationMethod, 'gopay');
|
|
assert.equal(stateUpdates[0].plusManualConfirmationStep, 7);
|
|
assert.match(String(stateUpdates[0].plusManualConfirmationRequestId || ''), /^gopay-/);
|
|
assert.equal(broadcasts.length, 1);
|
|
assert.equal(broadcasts[0].plusManualConfirmationPending, true);
|
|
assert.deepStrictEqual(
|
|
events.find((event) => event.type === 'tab-update'),
|
|
{ type: 'tab-update', tabId: 42, payload: { active: true } }
|
|
);
|
|
});
|