104 lines
3.6 KiB
JavaScript
104 lines
3.6 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
|
|
const signupFlowSource = fs.readFileSync('background/signup-flow-helpers.js', 'utf8');
|
|
const signupFlowGlobalScope = {};
|
|
const signupFlowApi = new Function('self', `${signupFlowSource}; return self.MultiPageSignupFlowHelpers;`)(signupFlowGlobalScope);
|
|
|
|
test('signup flow helper allocates mail2925 account before generating alias email', async () => {
|
|
const calls = {
|
|
ensureMail2925: [],
|
|
buildAlias: 0,
|
|
setEmail: [],
|
|
};
|
|
|
|
const helpers = signupFlowApi.createSignupFlowHelpers({
|
|
buildGeneratedAliasEmail: (state) => {
|
|
calls.buildAlias += 1;
|
|
assert.equal(state.currentMail2925AccountId, 'acc-2');
|
|
return 'demo123456@2925.com';
|
|
},
|
|
chrome: { tabs: { get: async () => ({ id: 1, url: 'https://auth.openai.com/create-account/password' }) } },
|
|
ensureContentScriptReadyOnTab: async () => {},
|
|
ensureHotmailAccountForFlow: async () => ({}),
|
|
ensureMail2925AccountForFlow: async (options) => {
|
|
calls.ensureMail2925.push(options);
|
|
return { id: 'acc-2', email: 'demo@2925.com' };
|
|
},
|
|
ensureLuckmailPurchaseForFlow: async () => ({}),
|
|
isGeneratedAliasProvider: () => true,
|
|
isReusableGeneratedAliasEmail: () => false,
|
|
isHotmailProvider: () => false,
|
|
isLuckmailProvider: () => false,
|
|
isSignupEmailVerificationPageUrl: () => false,
|
|
isSignupPasswordPageUrl: () => true,
|
|
reuseOrCreateTab: async () => 1,
|
|
sendToContentScriptResilient: async () => ({}),
|
|
setEmailState: async (email) => {
|
|
calls.setEmail.push(email);
|
|
},
|
|
SIGNUP_ENTRY_URL: 'https://chatgpt.com/',
|
|
OPENAI_AUTH_INJECT_FILES: [],
|
|
waitForTabUrlMatch: async () => null,
|
|
});
|
|
|
|
const email = await helpers.resolveSignupEmailForFlow({
|
|
mailProvider: '2925',
|
|
mail2925UseAccountPool: true,
|
|
currentMail2925AccountId: 'acc-2',
|
|
email: '',
|
|
});
|
|
|
|
assert.equal(email, 'demo123456@2925.com');
|
|
assert.deepStrictEqual(calls.ensureMail2925, [
|
|
{
|
|
allowAllocate: true,
|
|
preferredAccountId: 'acc-2',
|
|
markUsed: true,
|
|
},
|
|
]);
|
|
assert.equal(calls.buildAlias, 1);
|
|
assert.deepStrictEqual(calls.setEmail, ['demo123456@2925.com']);
|
|
});
|
|
|
|
test('signup flow helper skips mail2925 account allocation when account pool switch is off', async () => {
|
|
const calls = {
|
|
ensureMail2925: 0,
|
|
};
|
|
|
|
const helpers = signupFlowApi.createSignupFlowHelpers({
|
|
buildGeneratedAliasEmail: () => 'manual123456@2925.com',
|
|
chrome: { tabs: { get: async () => ({ id: 1, url: 'https://auth.openai.com/create-account/password' }) } },
|
|
ensureContentScriptReadyOnTab: async () => {},
|
|
ensureHotmailAccountForFlow: async () => ({}),
|
|
ensureMail2925AccountForFlow: async () => {
|
|
calls.ensureMail2925 += 1;
|
|
return { id: 'acc-2', email: 'demo@2925.com' };
|
|
},
|
|
ensureLuckmailPurchaseForFlow: async () => ({}),
|
|
isGeneratedAliasProvider: () => true,
|
|
isReusableGeneratedAliasEmail: () => false,
|
|
isHotmailProvider: () => false,
|
|
isLuckmailProvider: () => false,
|
|
isSignupEmailVerificationPageUrl: () => false,
|
|
isSignupPasswordPageUrl: () => true,
|
|
reuseOrCreateTab: async () => 1,
|
|
sendToContentScriptResilient: async () => ({}),
|
|
setEmailState: async () => {},
|
|
SIGNUP_ENTRY_URL: 'https://chatgpt.com/',
|
|
OPENAI_AUTH_INJECT_FILES: [],
|
|
waitForTabUrlMatch: async () => null,
|
|
});
|
|
|
|
const email = await helpers.resolveSignupEmailForFlow({
|
|
mailProvider: '2925',
|
|
mail2925UseAccountPool: false,
|
|
currentMail2925AccountId: 'acc-2',
|
|
email: '',
|
|
});
|
|
|
|
assert.equal(email, 'manual123456@2925.com');
|
|
assert.equal(calls.ensureMail2925, 0);
|
|
});
|