feat: 重构优化2925邮箱和gmail邮箱逻辑
This commit is contained in:
@@ -102,6 +102,8 @@ let currentState = {
|
||||
autoStepDelaySeconds: null,
|
||||
mailProvider: '163',
|
||||
emailGenerator: 'duck',
|
||||
gmailBaseEmail: 'demo@gmail.com',
|
||||
mail2925BaseEmail: 'demo@2925.com',
|
||||
emailPrefix: 'demo',
|
||||
inbucketHost: '',
|
||||
inbucketMailbox: '',
|
||||
@@ -151,6 +153,8 @@ async function resetState() {
|
||||
autoStepDelaySeconds: prev.autoStepDelaySeconds,
|
||||
mailProvider: prev.mailProvider,
|
||||
emailGenerator: prev.emailGenerator,
|
||||
gmailBaseEmail: prev.gmailBaseEmail,
|
||||
mail2925BaseEmail: prev.mail2925BaseEmail,
|
||||
emailPrefix: prev.emailPrefix,
|
||||
inbucketHost: prev.inbucketHost,
|
||||
inbucketMailbox: prev.inbucketMailbox,
|
||||
@@ -302,6 +306,8 @@ return {
|
||||
assert.strictEqual(snapshot.currentState.autoRunPhase, 'complete', 'both runs should complete after reset');
|
||||
assert.strictEqual(snapshot.currentState.autoRunCurrentRun, 2, 'final run index should be recorded');
|
||||
assert.strictEqual(snapshot.autoRunActive, false, 'auto-run should exit active state after completion');
|
||||
assert.strictEqual(snapshot.currentState.gmailBaseEmail, 'demo@gmail.com', 'gmail base email should survive fresh-attempt reset');
|
||||
assert.strictEqual(snapshot.currentState.mail2925BaseEmail, 'demo@2925.com', '2925 base email should survive fresh-attempt reset');
|
||||
|
||||
console.log('auto-run fresh attempt reset tests passed');
|
||||
})().catch((error) => {
|
||||
|
||||
@@ -132,3 +132,42 @@ test('signup flow helper recognizes email verification page as post-email landin
|
||||
assert.equal(ensureCalls, 1);
|
||||
assert.equal(passwordReadyChecks, 0);
|
||||
});
|
||||
|
||||
test('signup flow helper reuses existing managed alias email when it is still compatible', async () => {
|
||||
let buildCalls = 0;
|
||||
let setEmailCalls = 0;
|
||||
|
||||
const helpers = signupFlowApi.createSignupFlowHelpers({
|
||||
buildGeneratedAliasEmail: () => {
|
||||
buildCalls += 1;
|
||||
return 'demo+fresh@gmail.com';
|
||||
},
|
||||
chrome: { tabs: { get: async () => ({ id: 21, url: 'https://auth.openai.com/create-account/password' }) } },
|
||||
ensureContentScriptReadyOnTab: async () => {},
|
||||
ensureHotmailAccountForFlow: async () => ({}),
|
||||
ensureLuckmailPurchaseForFlow: async () => ({}),
|
||||
isGeneratedAliasProvider: () => true,
|
||||
isReusableGeneratedAliasEmail: (_state, email) => email === 'demo+saved@gmail.com',
|
||||
isHotmailProvider: () => false,
|
||||
isLuckmailProvider: () => false,
|
||||
isSignupEmailVerificationPageUrl: () => false,
|
||||
isSignupPasswordPageUrl: () => true,
|
||||
reuseOrCreateTab: async () => 21,
|
||||
sendToContentScriptResilient: async () => ({}),
|
||||
setEmailState: async () => {
|
||||
setEmailCalls += 1;
|
||||
},
|
||||
SIGNUP_ENTRY_URL: 'https://chatgpt.com/',
|
||||
SIGNUP_PAGE_INJECT_FILES: [],
|
||||
waitForTabUrlMatch: async () => null,
|
||||
});
|
||||
|
||||
const email = await helpers.resolveSignupEmailForFlow({
|
||||
mailProvider: 'gmail',
|
||||
email: 'demo+saved@gmail.com',
|
||||
});
|
||||
|
||||
assert.equal(email, 'demo+saved@gmail.com');
|
||||
assert.equal(buildCalls, 0);
|
||||
assert.equal(setEmailCalls, 0);
|
||||
});
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
|
||||
const source = fs.readFileSync('managed-alias-utils.js', 'utf8');
|
||||
const scope = {};
|
||||
const api = new Function('self', `${source}; return self.MultiPageManagedAliasUtils;`)(scope);
|
||||
|
||||
test('managed alias utils build gmail +tag email from full base email', () => {
|
||||
assert.equal(
|
||||
api.buildManagedAliasEmail('gmail', 'demo@gmail.com', 'riverstone'),
|
||||
'demo+riverstone@gmail.com'
|
||||
);
|
||||
});
|
||||
|
||||
test('managed alias utils build 2925 email from full base email', () => {
|
||||
assert.equal(
|
||||
api.buildManagedAliasEmail('2925', 'demo@2925.com', '123456'),
|
||||
'demo123456@2925.com'
|
||||
);
|
||||
});
|
||||
|
||||
test('managed alias utils validate provider email with or without configured base email', () => {
|
||||
assert.equal(api.isManagedAliasEmail('demo+riverstone@gmail.com', 'gmail', 'demo@gmail.com'), true);
|
||||
assert.equal(api.isManagedAliasEmail('demo123456@2925.com', '2925', 'demo@2925.com'), true);
|
||||
assert.equal(api.isManagedAliasEmail('manual@gmail.com', 'gmail', ''), true);
|
||||
assert.equal(api.isManagedAliasEmail('manual@qq.com', 'gmail', ''), false);
|
||||
});
|
||||
Reference in New Issue
Block a user