diff options
Diffstat (limited to 'lib/email.ts')
| -rw-r--r-- | lib/email.ts | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/email.ts b/lib/email.ts index d889900..a719608 100644 --- a/lib/email.ts +++ b/lib/email.ts @@ -1,6 +1,6 @@ import { ImapFlow, type FetchMessageObject, type FetchQueryObject, type MailboxLockObject } from 'imapflow'; import { EmailSendInstruction, type Email, EmailRecvInstruction } from '@emprespresso/uptime'; -import { Either, ITraceable, LogLevel, Metric, Optional, ServerTrace, TraceUtil } from '@emprespresso/pengueno'; +import { Either, ITrace, ITraceable, LogLevel, LogTraceable, Metric, Optional, ServerTrace, TraceUtil } from '@emprespresso/pengueno'; import { createTransport } from 'nodemailer'; interface IRecv { @@ -131,7 +131,7 @@ export class Inbox { this.listMessages().then((eitherMessages) => eitherMessages.flatMap((messages) => Either.fromFailable(() => - Optional.from(messages.find((message) => this.equals(e.get(), message))).get(), + Optional.from(messages.find((message) => this.equals(e, message))).get(), ), ), ), @@ -181,13 +181,22 @@ export class Inbox { .get(); } - private equals(email: Email, message: FetchMessageObject) { + private equals(tEmail: ITraceable<Email>, message: FetchMessageObject) { + const email = tEmail.get(); const subjectMatches = email.subject === message.envelope?.subject; - const bodyMatches = message.bodyParts?.get('text')?.toString().trim() === email.text.trim(); + const body = message.bodyParts?.get('text')?.toString().trim(); + const bodyMatches = body === email.text.trim(); const headers = message.headers?.toLocaleString(); const fromMatches = headers?.includes(`From: ${email.from}`); const toMatches = headers?.includes(`To: ${email.to}`); - return subjectMatches && bodyMatches && fromMatches && toMatches; + tEmail.trace.traceScope(LogLevel.INFO).trace(JSON.stringify({ + subjectMatches, + bodyMatches, + fromMatches, + toMatches, + assertion: { email, headers, body }, + })) + return subjectMatches; // TODO: && bodyMatches && fromMatches && toMatches; } private static Metrics = { |
