diff --git a/app/authenticators/custom.js b/app/authenticators/custom.js index 9ac5e61c31..e9f67ed30c 100644 --- a/app/authenticators/custom.js +++ b/app/authenticators/custom.js @@ -89,7 +89,11 @@ export default BaseAuthenticator.extend({ } return new Ember.RSVP.Promise((resolve, reject) => { - let data = { name: credentials.identification, password: credentials.password }; + let username = credentials.identification; + if (typeof username === 'string' && username) { + username = username.trim(); + } + let data = { name: username, password: credentials.password }; this._makeRequest('POST', data).then((response) => { response.name = data.name; response.expires_at = this._absolutizeExpirationTime(600); diff --git a/tests/acceptance/login-test.js b/tests/acceptance/login-test.js index 454f681107..29b1317853 100644 --- a/tests/acceptance/login-test.js +++ b/tests/acceptance/login-test.js @@ -16,30 +16,24 @@ module('Acceptance | login', { }); test('visiting / redirects user to login', function(assert) { - assert.expect(3); + assert.expect(1); runWithPouchDump('default', function() { visit('/'); - stubRequest('post', '/db/_session', function(request) { - assert.equal(request.requestBody, 'name=hradmin&password=test', 'credential are sent to the server'); - request.ok({ 'ok': true, 'name': 'hradmin', 'roles': ['System Administrator', 'admin', 'user'] }); - }); - - stubRequest('post', '/chkuser', function(request) { - assert.equal(request.requestBody, 'name=hradmin', 'username is sent to /chkuser'); - request.ok({ 'prefix': 'p1', 'role': 'System Administrator' }); - }); - andThen(function() { assert.equal(currentURL(), '/login'); }); - fillIn('#identification', 'hradmin'); - fillIn('#password', 'test'); - click('button:contains(Sign in)'); }); }); +test('login with correct credentials', function(assert) { + login(assert); +}); +test('login with correct credentials but space around username', function(assert) { + login(assert, true); +}); + test('incorrect credentials shows an error message on the screen', function(assert) { assert.expect(2); runWithPouchDump('default', function() { @@ -63,3 +57,28 @@ test('incorrect credentials shows an error message on the screen', function(asse }); }); + +function login(assert, spaceAroundUsername) { + assert.expect(3); + runWithPouchDump('default', function() { + visit('/login'); + + stubRequest('post', '/db/_session', function(request) { + assert.equal(request.requestBody, 'name=hradmin&password=test', !spaceAroundUsername ? 'credential are sent to the server' : 'username trimmed and credential are sent to the server'); + request.ok({ 'ok': true, 'name': 'hradmin', 'roles': ['System Administrator', 'admin', 'user'] }); + }); + + stubRequest('post', '/chkuser', function(request) { + assert.equal(request.requestBody, 'name=hradmin', !spaceAroundUsername ? 'username is sent to /chkuser' : 'trimmed username is sent to /chkuser'); + request.ok({ 'prefix': 'p1', 'role': 'System Administrator' }); + }); + + andThen(function() { + assert.equal(currentURL(), '/login'); + }); + + fillIn('#identification', !spaceAroundUsername ? 'hradmin' : ' hradmin'); + fillIn('#password', 'test'); + click('button:contains(Sign in)'); + }); +}