fix cloudflare temp email aws code parsing
This commit is contained in:
@@ -9,6 +9,9 @@ const {
|
||||
normalizeCloudflareTempEmailDomains,
|
||||
normalizeCloudflareTempEmailMailApiMessages,
|
||||
} = require('../cloudflare-temp-email-utils.js');
|
||||
const {
|
||||
pickVerificationMessageWithTimeFallback,
|
||||
} = require('../hotmail-utils.js');
|
||||
|
||||
test('normalizeCloudflareTempEmailBaseUrl normalizes host and preserves path', () => {
|
||||
assert.equal(
|
||||
@@ -103,6 +106,73 @@ test('normalizeCloudflareTempEmailMailApiMessages decodes multipart quoted print
|
||||
assert.equal(messages[0].subject, 'Login code');
|
||||
});
|
||||
|
||||
test('normalizeCloudflareTempEmailMailApiMessages supports nested CFTE rows with structured AWS html mail', () => {
|
||||
const messages = normalizeCloudflareTempEmailMailApiMessages({
|
||||
data: {
|
||||
results: [
|
||||
{
|
||||
_id: 'aws-mail-1',
|
||||
to: [{ address: 'tmpjjwk205m0h@edu.email.qlhazycoder.tech' }],
|
||||
from: {
|
||||
emailAddress: {
|
||||
address: 'no-reply@signin.aws',
|
||||
},
|
||||
},
|
||||
title: '验证您的 AWS 构建者 ID 电子邮件地址',
|
||||
body_html: [
|
||||
'<html><body>',
|
||||
'<p>验证码</p>',
|
||||
'<p style="background-color:#F3F3F3">248680</p>',
|
||||
'</body></html>',
|
||||
].join(''),
|
||||
createdAt: '2026-05-22T09:41:00.000Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
assert.equal(messages.length, 1);
|
||||
assert.equal(messages[0].id, 'aws-mail-1');
|
||||
assert.equal(messages[0].address, 'tmpjjwk205m0h@edu.email.qlhazycoder.tech');
|
||||
assert.equal(messages[0].from.emailAddress.address, 'no-reply@signin.aws');
|
||||
assert.equal(messages[0].subject, '验证您的 AWS 构建者 ID 电子邮件地址');
|
||||
assert.match(messages[0].bodyPreview, /248680/);
|
||||
assert.doesNotMatch(messages[0].bodyPreview, /<p/);
|
||||
});
|
||||
|
||||
test('normalized CFTE AWS Builder ID mail matches Kiro verification rules', () => {
|
||||
const messages = normalizeCloudflareTempEmailMailApiMessages({
|
||||
data: {
|
||||
results: [
|
||||
{
|
||||
id: 'aws-mail-2',
|
||||
to: { address: 'tmpjjwk205m0h@edu.email.qlhazycoder.tech' },
|
||||
from: { address: 'no-reply@signin.aws' },
|
||||
subject: '验证您的 AWS 构建者 ID 电子邮件地址',
|
||||
html: '<div>验证码</div><div>248680</div>',
|
||||
receivedAt: '2026-05-22T09:41:00.000Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
const result = pickVerificationMessageWithTimeFallback(messages, {
|
||||
afterTimestamp: Date.UTC(2026, 4, 22, 9, 40, 0),
|
||||
senderFilters: ['no-reply@signin.aws', 'aws'],
|
||||
subjectFilters: ['aws builder id', 'verification', '验证码', 'code', 'aws'],
|
||||
requiredKeywords: ['verification', '验证码', 'code', 'aws'],
|
||||
codePatterns: [
|
||||
{ source: '(?:verification\\s*code|验证码|Your code is|code is)[::\\s]*(\\d{6})', flags: 'gi' },
|
||||
{ source: '^\\s*(\\d{6})\\s*$', flags: 'gm' },
|
||||
{ source: '>\\s*(\\d{6})\\s*<', flags: 'g' },
|
||||
],
|
||||
excludeCodes: [],
|
||||
});
|
||||
|
||||
assert.equal(result.match?.message.id, 'aws-mail-2');
|
||||
assert.equal(result.match?.code, '248680');
|
||||
});
|
||||
|
||||
test('getCloudflareTempEmailAddressFromResponse supports direct and nested response shapes', () => {
|
||||
assert.equal(getCloudflareTempEmailAddressFromResponse({ address: 'one@example.com' }), 'one@example.com');
|
||||
assert.equal(getCloudflareTempEmailAddressFromResponse({ data: { address: 'two@example.com' } }), 'two@example.com');
|
||||
|
||||
Reference in New Issue
Block a user