feat: 增强步骤 3 的手机号注册逻辑,确保手机号身份优先处理并添加相关测试用例
This commit is contained in:
@@ -122,3 +122,81 @@ test('step 3 supports phone-only signup identity when password page is present',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
test('step 3 phone signup intent does not fall back to a stale email identity', async () => {
|
||||
const events = {
|
||||
passwordStates: [],
|
||||
messages: [],
|
||||
stateUpdates: [],
|
||||
};
|
||||
|
||||
const executor = api.createStep3Executor({
|
||||
addLog: async () => {},
|
||||
chrome: { tabs: { update: async () => {} } },
|
||||
ensureContentScriptReadyOnTab: async () => {},
|
||||
generatePassword: () => 'Generated123!',
|
||||
getTabId: async () => 88,
|
||||
isTabAlive: async () => true,
|
||||
resolveSignupMethod: () => 'phone',
|
||||
sendToContentScript: async (_source, message) => {
|
||||
events.messages.push(message);
|
||||
},
|
||||
setPasswordState: async (password) => {
|
||||
events.passwordStates.push(password);
|
||||
},
|
||||
setState: async (updates) => {
|
||||
events.stateUpdates.push(updates);
|
||||
},
|
||||
SIGNUP_PAGE_INJECT_FILES: [],
|
||||
});
|
||||
|
||||
await assert.rejects(
|
||||
() => executor.executeStep3({
|
||||
email: 'stale@example.com',
|
||||
signupMethod: 'phone',
|
||||
resolvedSignupMethod: 'phone',
|
||||
accountIdentifierType: null,
|
||||
accountIdentifier: '',
|
||||
customPassword: 'PhoneSecret123!',
|
||||
accounts: [],
|
||||
}),
|
||||
/缺少注册手机号,请先完成步骤 2 或在侧栏填写注册手机号后再执行步骤 3。/
|
||||
);
|
||||
|
||||
assert.deepStrictEqual(events.passwordStates, []);
|
||||
assert.deepStrictEqual(events.stateUpdates, []);
|
||||
assert.deepStrictEqual(events.messages, []);
|
||||
});
|
||||
|
||||
test('step 3 respects resolved email fallback when phone signup is unavailable', async () => {
|
||||
const events = {
|
||||
messages: [],
|
||||
};
|
||||
|
||||
const executor = api.createStep3Executor({
|
||||
addLog: async () => {},
|
||||
chrome: { tabs: { update: async () => {} } },
|
||||
ensureContentScriptReadyOnTab: async () => {},
|
||||
generatePassword: () => 'Generated123!',
|
||||
getTabId: async () => 88,
|
||||
isTabAlive: async () => true,
|
||||
resolveSignupMethod: () => 'email',
|
||||
sendToContentScript: async (_source, message) => {
|
||||
events.messages.push(message);
|
||||
},
|
||||
setPasswordState: async () => {},
|
||||
setState: async () => {},
|
||||
SIGNUP_PAGE_INJECT_FILES: [],
|
||||
});
|
||||
|
||||
await executor.executeStep3({
|
||||
email: 'fallback@example.com',
|
||||
signupMethod: 'phone',
|
||||
resolvedSignupMethod: 'email',
|
||||
customPassword: 'EmailSecret123!',
|
||||
accounts: [],
|
||||
});
|
||||
|
||||
assert.equal(events.messages[0].payload.accountIdentifierType, 'email');
|
||||
assert.equal(events.messages[0].payload.accountIdentifier, 'fallback@example.com');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user