"use strict"; var assert = require('assert'); var mocks = require('../../lib/test/mocks'); var db = require('../../lib/test/db'); var sendMail = geddy.mailer.sendMail; var tests = module.exports = { // start with a clean DB 'before': function(next) { db.reset(function() { db.init(function() { db.migrate(next); }); }); }, 'beforeEach': function(next) { // restore sendMail method geddy.mailer.sendMail = sendMail; // empty database db.empty(next); }, 'Create new user': function(next) { var timeout = setTimeout(function() { assert.fail('User creation has not finished in time.'); }, 2000); // check if confirmation email has been send geddy.mailer.sendMail = function(opts, cb) { // do your assertions here // do not forget to call the callback cb(); }); mocks.executeControllerAction('Users', 'create', params, function(data, options) { clearTimeout(timeout); // do your assertions here }); } };