2925邮箱增加账号池功能
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
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/',
|
||||
SIGNUP_PAGE_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/',
|
||||
SIGNUP_PAGE_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);
|
||||
});
|
||||
Reference in New Issue
Block a user