UNPKG

mailslurp-client

Version:

Official client for MailSlurp Email and SMS API. Create email addresses and phone numbers in Javascript without a mail server. Send and receive real emails in applications or tests.

136 lines (118 loc) 3.97 kB
import MailSlurp, { CreateWebhookOptionsEventNameEnum, MatchOptionFieldEnum, MatchOptions, MatchOptionShouldEnum, WaitForEmailCountSortEnum, } from '../dist'; jest.setTimeout(120_000); describe('wait for', () => { const config = { apiKey: process.env.API_KEY }; //<gen>wait_for_multiple it('can wait for multiple emails', async () => { const mailslurp = new MailSlurp(config); // example of creating inboxes simultaneously const inbox1 = await mailslurp.createInbox(); const inbox2 = await mailslurp.createInbox(); // send two emails await mailslurp.sendEmail(inbox1.id, { to: [inbox2.emailAddress], subject: 'Hello Dogs', }); await mailslurp.sendEmail(inbox1.id, { to: [inbox2.emailAddress], subject: 'Hello Cats', }); // wait for 2 emails const emails = await mailslurp.waitController.waitForEmailCount({ count: 2, inboxId: inbox2.id, sort: WaitForEmailCountSortEnum.DESC, }); const subjects = emails.map((e) => e.subject); expect(subjects).toContain('Hello Dogs'); expect(subjects).toContain('Hello Cats'); }); //</gen> }); describe('wait for matching', () => { const config = { apiKey: process.env.API_KEY }; const mailslurp = new MailSlurp(config); const timeoutMillis = 30_000; it('can wait for matching emails', async () => { //<gen>wait_for_matching const inbox1 = await mailslurp.createInbox(); const inbox2 = await mailslurp.createInbox(); // specify recipient (must be array) const to = [inbox2.emailAddress]; // send two emails await mailslurp.sendEmail(inbox1.id, { to, subject: 'Apples' }); await mailslurp.sendEmail(inbox1.id, { to, subject: 'Oranges' }); // wait for matching email based on subject (see MatchOptions for all options) const matchOptions: MatchOptions = { matches: [ { field: MatchOptionFieldEnum.SUBJECT, should: MatchOptionShouldEnum.CONTAIN, value: 'Apples', }, ], }; const expectCount = 1; const matchingEmails = await mailslurp.waitController.waitForMatchingEmails( { inboxId: inbox2.id, matchOptions: matchOptions, count: expectCount, timeout: timeoutMillis, unreadOnly: true, } ); expect(matchingEmails.length).toEqual(1); expect(matchingEmails[0].subject).toEqual('Apples'); //</gen> }); }); describe('extract email content', () => { const config = { apiKey: process.env.API_KEY }; const mailslurp = new MailSlurp(config); const timeoutMillis = 30_000; const inboxId = ''; it('extract content', async () => { /* //<gen>create_webhook await mailslurp.webhookController.createWebhook({ inboxId, webhookOptions: { url: "https://my-server.com/webhook", eventName: CreateWebhookOptionsEventNameEnum.NEW_EMAIL } }) //</gen> */ //<gen>extract_email_content const inbox1 = await mailslurp.createInbox(); const inbox2 = await mailslurp.createInbox(); const to = [inbox2.emailAddress]; const body = 'Hi there. Your code is: 123456'; await mailslurp.sendEmail(inbox1.id, { to, body }); // wait for email const email = await mailslurp.waitController.waitForLatestEmail({ inboxId: inbox2.id, timeout: timeoutMillis, unreadOnly: true, }); const pattern = 'code is: ([0-9]{6})'; expect(email.body).toContain('Your code is'); // pass the pattern to mailslurp to match for emails const result = await mailslurp.emailController.getEmailContentMatch({ contentMatchOptions: { pattern }, emailId: email.id, }); // access the match groups expect(result.matches).toHaveLength(2); expect(result.matches[0]).toEqual('code is: 123456'); expect(result.matches[1]).toEqual('123456'); //</gen> }); });