cypress-maildev
Version:
An easy-to-use cypress bunch of commands to use Maildev API for tests messages reception !
85 lines (84 loc) • 2.91 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MaildevCommands = void 0;
/* global Cypress */
const request_1 = __importDefault(require("./request"));
class MaildevCommands {
static get cypressCommands() {
return [
"maildevGetAllMessages",
"maildevGetLastMessage",
"maildevGetMessageById",
"maildevVisitMessageById",
"maildevGetMessageBySubject",
"maildevGetMessageBySentTo",
"maildevDeleteMessageById",
"maildevGetOTPCode",
"maildevDeleteAllMessages",
"maildevHealthcheck",
];
}
constructor() {
console.log("MAILDEV_PROTOCOL", Cypress.expose("MAILDEV_PROTOCOL"));
this.baseUrl = `${Cypress.expose("MAILDEV_PROTOCOL")}://${Cypress.expose("MAILDEV_HOST")}`;
if (Cypress.expose("MAILDEV_API_PORT")) {
this.baseUrl += `:${Cypress.expose("MAILDEV_API_PORT")}`;
}
this.request = new request_1.default({
baseUrl: this.baseUrl,
});
}
maildevGetAllMessages() {
return this.request.get("/email");
}
maildevGetLastMessage() {
return this.maildevGetAllMessages().then((emails) => {
return emails[emails.length - 1];
});
}
maildevGetMessageById(id) {
return this.request.get(`/email/${id}`);
}
maildevVisitMessageById(id) {
cy.origin(`${this.baseUrl}`, { args: { id } }, ({ id }) => {
cy.visit(`/email/${id}/html`);
});
}
maildevGetMessageBySubject(str) {
return this.maildevGetAllMessages().then((emails) => {
var _a;
return (_a = emails.find((email) => email.subject === str)) !== null && _a !== void 0 ? _a : null;
});
}
maildevGetMessageBySentTo(address) {
return this.maildevGetAllMessages().then((messages) => {
const reversedMessages = messages.reverse();
for (const message of reversedMessages) {
for (const to of message.to) {
if (to.address === address) {
return message;
}
}
}
return null;
});
}
maildevDeleteMessageById(id) {
return this.request.delete(`/email/${id}`);
}
maildevGetOTPCode(str, digits = 6) {
const OTP_REGEXP = new RegExp(`\\d{${digits}}`);
const res = str.match(OTP_REGEXP);
return cy.wrap(res ? res[0] : null);
}
maildevDeleteAllMessages() {
return this.request.delete("/email/all");
}
maildevHealthcheck() {
return this.request.get("/healthz");
}
}
exports.MaildevCommands = MaildevCommands;