diff --git a/lib/auth.js b/lib/auth.js index 8f00b77..714acd0 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -118,7 +118,13 @@ module.exports = { app_token: appToken }; - this._authenticate(requestData, function(responseData) { + this._authenticate(requestData, function(err, responseData) { + if (err) { + callback(err); + + return; + } + this._onAccessTokenAcquired(responseData, callback); }.bind(this)); }, diff --git a/test/auth.spec.js b/test/auth.spec.js index 3686929..de11eb8 100644 --- a/test/auth.spec.js +++ b/test/auth.spec.js @@ -199,7 +199,7 @@ describe('auth', function() { var authData = { access_token: 'a321' }; var callback = function() {}; var host = { - _authenticate: sinon.stub().callsArgWith(1, authData), + _authenticate: sinon.stub().callsArgWith(1, null, authData), _onAccessTokenAcquired: sinon.stub() }; @@ -209,6 +209,21 @@ describe('auth', function() { expect(host._onAccessTokenAcquired.calledWithExactly(authData, callback)).toBe(true); }); + it('should not call _onAccessTokenAcquired when auth failed and call the callback', function() { + var callback = sinon.stub(); + var err = new Error(); + var host = { + _authenticate: sinon.stub().callsArgWith(1, err), + _onAccessTokenAcquired: sinon.stub() + }; + + auth.authenticateWithApp.call(host, 123, 'e123', callback); + + expect(host._onAccessTokenAcquired.called).toBe(false); + expect(callback.called).toBe(true); + expect(callback.calledWithExactly(err)).toBe(true); + }); + }); describe('_getAuthFromStore', function() {