0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-11 02:12:21 -05:00
ghost/core/test/functional/client/signin_test.js

177 lines
7 KiB
JavaScript
Raw Normal View History

// # Signin Test
// Test that signin works, including testing our spam prevention mechanisms
/*globals casper, __utils__, url, newUser, user, falseUser */
//CasperTest.emberBegin('Ensure Session is Killed', 1, function suite(test) {
// casper.thenOpenAndWaitForPageLoad('signout', function ensureSignedOut() {
// test.assertUrlMatch(/ghost\/ember\/sign/, 'We got redirected to signin or signup page');
// });
//}, true);
CasperTest.emberBegin('Ensure a User is Registered', 3, function suite(test) {
casper.thenOpenAndWaitForPageLoad('signup', function checkUrl() {
test.assertUrlMatch(/ghost\/ember\/signup\/$/, 'Landed on the correct URL');
});
casper.waitForOpaque(".signup-box",
function then() {
this.fillAndSave("#signup", newUser);
},
function onTimeout() {
test.fail('Sign up form didn\'t fade in.');
});
casper.captureScreenshot('login_register_test.png');
casper.waitForSelectorTextChange('.notification-error', function onSuccess() {
test.assertSelectorHasText('.notification-error', 'already registered');
// If the previous assert succeeds, then we should skip the next check and just pass.
casper.echoConcise('Already registered!');
casper.captureScreenshot('already_registered.png');
}, function onTimeout() {
test.assertUrlMatch(/ghost\/ember\/\d+\/$/, 'If we\'re not already registered, we should be logged in.');
casper.echoConcise('Successfully registered.');
}, 2000);
casper.thenOpenAndWaitForPageLoad('signout', function then() {
test.assertUrlMatch(/ghost\/ember\/signin/, 'We got redirected to signin page.');
});
}, true);
CasperTest.emberBegin("Ghost admin will load login page", 3, function suite(test) {
casper.thenOpenAndWaitForPageLoad('signin', function testTitleAndUrl() {
test.assertTitle("Ghost Admin", "Ghost admin has no title");
test.assertUrlMatch(/ghost\/ember\/signin\/$/, 'We should be presented with the signin page.');
casper.then(function testLink() {
var link = this.evaluate(function (selector) {
return document.querySelector(selector).getAttribute('href');
}, '.forgotten-password');
casper.echoConcise('LINK' + link);
test.assert(link === '/ghost/ember/forgotten/', 'Has correct forgotten password link');
});
});
}, true);
// Note, this test applies to a global redirect, which sends us to the standard admin.
// Once Ember becomes the standard admin, this test should still pass.
CasperTest.emberBegin('Redirects login to signin', 2, function suite(test) {
casper.start(url + 'ghost/login/', function testRedirect(response) {
test.assertEqual(response.status, 200, 'Response status should be 200.');
test.assertUrlMatch(/ghost\/signin\//, 'Should be redirected to /signin/.');
});
}, true);
CasperTest.emberBegin("Can't spam it", 4, function suite(test) {
casper.thenOpenAndWaitForPageLoad('signin', function testTitle() {
test.assertTitle("Ghost Admin", "Ghost admin has no title");
test.assertUrlMatch(/ghost\/ember\/signin\/$/, 'Landed on the correct URL');
});
casper.waitForOpaque(".login-box",
function then() {
this.fillAndSave("#login", falseUser);
},
function onTimeout() {
test.fail('Sign in form didn\'t fade in.');
});
casper.captureScreenshot('login_spam_test.png');
casper.wait(200, function doneWait() {
this.fillAndSave("#login", falseUser);
});
casper.captureScreenshot('login_spam_test2.png');
casper.waitForText('Slow down, there are way too many login attempts!', function onSuccess() {
test.assert(true, 'Spamming the login did result in an error notification');
test.assertSelectorDoesntHaveText('.notification-error', '[object Object]');
}, function onTimeout() {
test.assert(false, 'Spamming the login did not result in an error notification');
});
// This test causes the spam notification
// add a wait to ensure future tests don't get tripped up by this.
casper.wait(2000);
}, true);
CasperTest.emberBegin("Login limit is in place", 4, function suite(test) {
casper.thenOpenAndWaitForPageLoad('signin', function testTitleAndUrl() {
test.assertTitle("Ghost Admin", "Ghost admin has no title");
test.assertUrlMatch(/ghost\/ember\/signin\/$/, 'Landed on the correct URL');
});
casper.waitForOpaque(".login-box",
function then() {
this.fillAndSave("#login", falseUser);
},
function onTimeout() {
test.fail('Sign in form didn\'t fade in.');
});
casper.wait(2100, function doneWait() {
this.fillAndSave("#login", falseUser);
});
casper.waitForText('remaining', function onSuccess() {
test.assert(true, 'The login limit is in place.');
test.assertSelectorDoesntHaveText('.notification-error', '[object Object]');
}, function onTimeout() {
test.assert(false, 'We did not trip the login limit.');
});
// This test used login, add a wait to
// ensure future tests don't get tripped up by this.
casper.wait(2000);
}, true);
CasperTest.emberBegin("Can login to Ghost", 5, function suite(test) {
casper.thenOpenAndWaitForPageLoad('signin', function testTitleAndUrl() {
test.assertTitle("Ghost Admin", "Ghost admin has no title");
test.assertUrlMatch(/ghost\/ember\/signin\/$/, 'Landed on the correct URL');
});
casper.waitForOpaque(".login-box", function then() {
this.fillAndSave("#login", user);
});
casper.wait(2000);
casper.waitForResource(/posts/, function testForDashboard() {
test.assertUrlMatch(/ghost\/ember\/\d+\/$/, 'Landed on the correct URL');
test.assertExists("#global-header", "Global admin header is present");
test.assertExists(".manage", "We're now on content");
}, function onTimeOut() {
test.fail('Failed to signin');
});
}, true);
// Uncomment when signin / email validation has been readded to the frontend
//CasperTest.emberBegin('Ensure email field form validation', 3, function suite(test) {
// casper.thenOpenAndWaitForPageLoad('signin', function testTitleAndUrl() {
// test.assertTitle("Ghost Admin", "Ghost admin has no title");
// test.assertUrlMatch(/ghost\/ember\/signin\/$/, 'Landed on the correct URL');
// });
//
// casper.waitForOpaque(".js-login-box",
// function then() {
// this.fillAndSave("form.login-form", {
// 'email': 'notanemail'
// });
// },
// function onTimeout() {
// test.fail('Login form didn\'t fade in.');
// });
//
// casper.waitForSelectorTextChange('.notification-error', function onSuccess() {
// test.assertSelectorHasText('.notification-error', 'Invalid Email');
// }, function onTimeout() {
// test.fail('Email validation error did not appear');
// }, 2000);
//
//}, true);