Files
meteor/tools/test-utils.js
Emily Stark 87f22606ff Factor our accounts command timeout in more places.
We've been seeing flakiness on login tests on different internet
connections, so now we can easily bump up the timeout (at the cost of
slowing down test failures).
2014-02-15 14:46:59 -08:00

107 lines
2.8 KiB
JavaScript

var randomString = function (charsCount) {
var chars = 'abcdefghijklmnopqrstuvwxyz';
var str = '';
for (var i = 0; i < charsCount; i++) {
str = str + chars.charAt(Math.floor(Math.random() * chars.length));
}
return str;
};
exports.randomString = randomString;
var randomAppName = function () {
return 'selftest-app-' + randomString(10);
};
exports.randomAppName = randomAppName;
exports.randomUserEmail = function () {
return 'selftest-user-' + randomString(15) + '@guerrillamail.com';
};
// Creates an app and deploys it with an old release. 'password' is
// optional. Returns the name of the deployed app.
exports.createAndDeployLegacyApp = function (sandbox, password) {
var name = randomAppName();
sandbox.createApp(name, 'empty');
sandbox.cd(name);
var runArgs = ['deploy', '--release', '0.7.0.1', name];
if (password)
runArgs.push('-P');
var run = sandbox.run.apply(sandbox, runArgs);
if (password) {
// Give it time to download and install a new release, if necessary.
run.waitSecs(30);
run.match('New Password:');
run.write(password + '\n');
run.match('New Password (again):');
run.write(password + '\n');
}
run.waitSecs(90);
run.match('Now serving at ' + name + '.meteor.com');
// XXX: We should wait for it to exit with code 0, but it times out for some reason.
run.stop();
return name;
};
exports.cleanUpLegacyApp = function (sandbox, name, password) {
var run = sandbox.run('deploy', '--release', '0.7.0.1', '-D', name);
if (password) {
run.waitSecs(10);
run.matchErr('Password:');
run.write(password + '\n');
}
run.waitSecs(20);
run.match('Deleted');
// XXX same as above, we should be waiting for exit code 0, but the
// process appears to never exit.
run.stop();
};
// Creates an app and deploys it. Assumes the sandbox is already logged
// in.
exports.createAndDeployApp = function (sandbox) {
var name = randomAppName();
sandbox.createApp(name, 'empty');
sandbox.cd(name);
var run = sandbox.run('deploy', name);
run.waitSecs(90);
run.match('Now serving at ' + name + '.meteor.com');
run.waitSecs(10);
run.expectExit(0);
return name;
};
exports.cleanUpApp = function (sandbox, name) {
var run = sandbox.run('deploy', '-D', name);
run.waitSecs(90);
run.match('Deleted');
run.expectExit(0);
return name;
};
exports.login = function (s, username, password) {
var run = s.run('login');
run.waitSecs(2);
run.matchErr('Username:');
run.write(username + '\n');
run.matchErr('Password:');
run.write(password + '\n');
run.waitSecs(15);
run.matchErr('Logged in as ' + username + ".");
run.expectExit(0);
};
exports.logout = function (s) {
var run = s.run('logout');
run.waitSecs(15);
run.matchErr('Logged out');
run.expectExit(0);
};
exports.accountsCommandTimeoutSecs = 15;