Files
meteor/tools/tests/claim.js
Emily Stark ff8abb4b04 Call logout in selftests that log in.
This avoids wracking up huge numbers of login tokens for the test
user. It would be nice to have these automatically cleaned up, but this
will do for now.
2014-03-14 18:50:48 -07:00

161 lines
4.7 KiB
JavaScript

var selftest = require('../selftest.js');
var testUtils = require('../test-utils.js');
var Sandbox = selftest.Sandbox;
var files = require('../files.js');
var commandTimeoutSecs = testUtils.accountsCommandTimeoutSecs;
var loggedInError = selftest.markStack(function(run) {
run.waitSecs(commandTimeoutSecs);
run.matchErr("You must be logged in to claim sites.");
run.expectExit(1);
});
var waitAndError = selftest.markStack(function(run, errmsg) {
run.waitSecs(commandTimeoutSecs);
run.matchErr(errmsg);
run.expectExit(1);
});
selftest.define("claim", ['net', 'slow'], function () {
var s = new Sandbox;
// Can't claim sites while logged out.
// Nonexistent site.
var run = s.run('claim', testUtils.randomAppName(20));
loggedInError(run);
// Can't claim sites without specifying a site
run = s.run('claim');
run.matchErr('not enough arguments');
run.expectExit(1);
// Existing site.
run = s.run('claim', 'mother-test');
loggedInError(run);
// Claim will not work on non-legacy sites.
// belongs to me.
testUtils.login(s, "test", "testtest");
var appName = testUtils.createAndDeployApp(s);
run = s.run('claim', appName);
waitAndError(run, "That site already belongs to you.");
// belongs to not me.
testUtils.logout(s);
testUtils.login(s, "testtest", "testtest");
run = s.run('claim', appName);
waitAndError(run, "Sorry, that site belongs to someone else.");
// belongs to not me, but I am authorized.
testUtils.logout(s);
testUtils.login(s, "test", "testtest");
run = s.run('authorized', appName, '--add', 'testtest');
run.waitSecs(commandTimeoutSecs);
run.match('added');
run.expectExit(0);
testUtils.logout(s);
testUtils.login(s, "testtest", "testtest");
run = s.run('claim', appName);
waitAndError(run, "That site already belongs to you.");
testUtils.cleanUpApp(s, appName);
// Legacy sites.
var sLegacy;
if (files.inCheckout()) {
sLegacy = new Sandbox({
// Include a warehouse argument so that we can deploy apps with
// --release arguments.
warehouse: {
v1: { tools: 'tool1', latest: true }
}
});
} else {
sLegacy = new Sandbox;
}
// legacy w/pwd.
var pwd = testUtils.randomString(10);
var legacyApp = testUtils.createAndDeployLegacyApp(sLegacy, pwd);
run = s.run('claim', legacyApp);
run.waitSecs(commandTimeoutSecs);
run.matchErr('Password: ');
run.write('badpass\n');
run.waitSecs(commandTimeoutSecs);
run.matchErr("Couldn't claim site:");
run.expectExit(1);
run = s.run('claim', legacyApp);
run.waitSecs(commandTimeoutSecs);
run.matchErr('Password:');
run.write(pwd+"\n");
run.waitSecs(commandTimeoutSecs);
run.match("successfully transferred to your account");
run.expectExit(0);
testUtils.cleanUpApp(s, legacyApp);
// legacy w/o pwd.
legacyApp = testUtils.createAndDeployLegacyApp(sLegacy);
run = s.run('claim', legacyApp);
run.waitSecs(commandTimeoutSecs);
run.match("successfully transferred to your account");
run.expectExit(0);
// No site deployed.
run = s.run('claim', testUtils.randomAppName(20));
waitAndError(run, "There isn't a site deployed at that address.");
testUtils.cleanUpApp(s, legacyApp);
testUtils.logout(s);
});
selftest.define('claim - no username', ['net', 'slow'], function () {
var s = new Sandbox;
var sandboxWithWarehouse;
if (files.inCheckout()) {
sandboxWithWarehouse = new Sandbox({
// Include a warehouse argument so that we can deploy apps with
// --release arguments.
warehouse: {
v1: { tools: 'tool1', latest: true }
}
});
} else {
sandboxWithWarehouse = new Sandbox;
}
// We shouldn't be able to claim sites before we set a username.
var email = testUtils.randomUserEmail();
var username = testUtils.randomString(10);
var appName = testUtils.randomAppName();
var token = testUtils.deployWithNewEmail(s, email, appName);
var legacyAppName = testUtils.createAndDeployLegacyApp(
sandboxWithWarehouse,
'test'
);
var run = s.run('claim', legacyAppName);
run.waitSecs(commandTimeoutSecs);
run.matchErr('Password:');
run.write('test\n');
run.waitSecs(commandTimeoutSecs);
run.matchErr('You need to set a password');
run.matchErr(testUtils.registrationUrlRegexp);
run.expectExit(1);
// After we set a username, we should be able to claim sites.
testUtils.registerWithToken(token, username, 'testtest', email);
run = s.run('claim', legacyAppName);
run.waitSecs(commandTimeoutSecs);
run.matchErr('Password: ');
run.write('test\n');
run.waitSecs(commandTimeoutSecs);
run.match('transferred to your account');
run.expectExit(0);
testUtils.cleanUpApp(s, appName);
testUtils.cleanUpApp(s, legacyAppName);
testUtils.logout(s);
});