meteor-email-stub icon indicating copy to clipboard operation
meteor-email-stub copied to clipboard

Allows you to inspect sent emails and assert on their content.

#xolvio:email-stub

Stores emails so that they can be referenced by test suite.

#Get the Book To learn more about testing with Meteor, consider purchasing our book The Meteor Testing Manual.

###Installation

meteor add xolvio:email-stub

###Usage

Run a through your app manually, or using integration / end-to-end tests and emails that are sent from your app will be captured wherever Email.send is used, such as accounts for verifying emails.

Set up

Meteor.call('emailStub/stub');

// or running with Chimp
server.call('emailStub/stub');

Retrieve emails

Meteor.call('emailStub/getEmails', function(e, emails) {
  console.log(emails);
});

// or running with Chimp
let emails = server.call('emailStub/getEmails');

Assuming two emails were sent, the code above would show:

[
 {
   _id: "ACZqWmLejePo9zQQD",
   from: "Xolv.io <[email protected]>",
   to: "[email protected]"
   subject: "Please verify your email address",
   text: "Hello Someone,↵↵To verify your account email, simply click the link below.↵↵http://localhost:3000/#/verify-email/m_3n4CbgeESDGaugJ656RoqJRj5PlCjk0Cm43PU3aEN↵↵Thanks.↵"
 },
 {
   _id: "2aY6FkWRcbcr8RxL7",
   from: "Xolv.io <[email protected]>",
   to: "[email protected]"
   subject: "Another email",
   text: "with different content"
 }
]

In your code, you can then do assertions like:

  emails[0].subject.should.be('Please verify your email address');

Another use for testing is to extract the verification link like this:


  // grab the verification link
  var verificationLink = emails[0].text.match(/(http|https|www)\S+/)[0];

  // then use something like xolvio:webdriver to visit the URL like a user would
  browser.url(verificationLink)

This package is a debugOnly package and will only be used when developing locally.

Testing lifecycle

Set up

Meteor.call('emailStub/stub');

Reset collection

Meteor.call('emailStub/reset');

Restore and remove stub

Meteor.call('emailStub/restore');