Files
FlowPilot/tests/background-verification-flow-module.test.js
T
2026-05-16 21:58:14 +08:00

53 lines
1.9 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
test('background imports verification flow module', () => {
const source = fs.readFileSync('background.js', 'utf8');
assert.match(source, /background\/verification-flow\.js/);
});
test('verification flow module exposes a factory', () => {
const source = fs.readFileSync('background/verification-flow.js', 'utf8');
const globalScope = {};
const api = new Function('self', `${source}; return self.MultiPageBackgroundVerificationFlow;`)(globalScope);
assert.equal(typeof api?.createVerificationFlowHelpers, 'function');
});
test('verification flow routes YYDS Mail provider to background poller', async () => {
const source = fs.readFileSync('background/verification-flow.js', 'utf8');
const globalScope = {};
const api = new Function('self', `${source}; return self.MultiPageBackgroundVerificationFlow;`)(globalScope);
const pollCalls = [];
const helpers = api.createVerificationFlowHelpers({
addLog: async () => {},
buildVerificationPollPayload: () => ({ maxAttempts: 1, intervalMs: 1 }),
getState: async () => ({}),
getTabId: async () => 1,
isStopError: () => false,
pollYydsMailVerificationCode: async (step, state, payload) => {
pollCalls.push({ step, state, payload });
return { ok: true, code: '123456', emailTimestamp: 1, mailId: 'msg-1' };
},
sendToContentScript: async () => ({}),
setState: async () => {},
sleepWithStop: async () => {},
throwIfStopped: () => {},
YYDS_MAIL_PROVIDER: 'yyds-mail',
});
const result = await helpers.pollFreshVerificationCode(
4,
{ mailProvider: 'yyds-mail' },
{ provider: 'yyds-mail', label: 'YYDS Mail' },
{ disableTimeBudgetCap: true }
);
assert.equal(result.code, '123456');
assert.equal(pollCalls.length, 1);
assert.equal(pollCalls[0].step, 4);
assert.equal(pollCalls[0].payload.maxAttempts, 1);
});