summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/email.ts19
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 = {