Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
99
gaia/apps/email/test/marionette/lib/servers/fakeimap.js
Executable file
99
gaia/apps/email/test/marionette/lib/servers/fakeimap.js
Executable file
|
|
@ -0,0 +1,99 @@
|
|||
'use strict';
|
||||
/* jshint node: true */
|
||||
|
||||
var server = require('mail-fakeservers');
|
||||
|
||||
var DEFAULT_OPTIONS = Object.freeze({
|
||||
// convention from GELAM
|
||||
credentials: {
|
||||
username: 'testy',
|
||||
password: 'testy'
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Updates given object with the state from an imapStack.
|
||||
*
|
||||
* @param {Object} state target.
|
||||
* @param {Object} stack to pull updates from.
|
||||
* @param {Object} options for setup.
|
||||
*/
|
||||
function updateState(state, stack, options) {
|
||||
if (!options) {
|
||||
options = DEFAULT_OPTIONS;
|
||||
}
|
||||
|
||||
state.imap = {
|
||||
port: stack.imapPort,
|
||||
username: options.credentials.username,
|
||||
password: options.credentials.password,
|
||||
hostname: 'localhost'
|
||||
};
|
||||
state.smtp = {
|
||||
port: stack.smtpPort,
|
||||
username: 'outgoingUsername' in options.credentials ?
|
||||
options.credentials.outgoingUsername : options.credentials.username,
|
||||
password: 'outgoingPassword' in options.credentials ?
|
||||
options.credentials.outgoingPassword : options.credentials.password,
|
||||
hostname: 'localhost'
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} options for setup.
|
||||
* @param {Object} mochaContext from callee.
|
||||
*/
|
||||
function use(options, mochaContext) {
|
||||
/**
|
||||
* Reused for every test/setup/teardown contains internal state so tests can
|
||||
* just directly reference the same object instead of manging state
|
||||
* themselves.
|
||||
*
|
||||
* @type {Object}
|
||||
* @private
|
||||
*/
|
||||
var state = {};
|
||||
|
||||
// spawns servers
|
||||
var controlServer;
|
||||
|
||||
// current imap/smtp servers
|
||||
var imapStack;
|
||||
|
||||
if (options === null) {
|
||||
options = DEFAULT_OPTIONS;
|
||||
}
|
||||
|
||||
suiteSetup(function(done) {
|
||||
this.timeout('20s');
|
||||
server.create(function(err, control) {
|
||||
controlServer = control;
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
// we need a new stack each test
|
||||
setup(function(done) {
|
||||
controlServer.createImapStack(options, function(err, imap) {
|
||||
// update the state information
|
||||
updateState(state, imap, options);
|
||||
|
||||
imapStack = imap;
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
// clear away old servers
|
||||
teardown(function(done) {
|
||||
controlServer.cleanupStacks(done);
|
||||
});
|
||||
|
||||
// so node can exit close the server processes.
|
||||
suiteTeardown(function() {
|
||||
controlServer.kill();
|
||||
});
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
module.exports.use = use;
|
||||
Loading…
Reference in a new issue