Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/grant-types/authorization-code-grant-type.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ AuthorizationCodeGrantType.prototype.revokeAuthorizationCode = function(code) {

AuthorizationCodeGrantType.prototype.saveToken = function(user, client, authorizationCode, scope) {
const fns = [
this.validateScope(user, client, scope),
scope ? this.validateScope(user, client, scope) : scope,
this.generateAccessToken(client, user, scope),
this.generateRefreshToken(client, user, scope),
this.getAccessTokenExpiresAt(),
Expand Down
31 changes: 31 additions & 0 deletions test/unit/grant-types/authorization-code-grant-type_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,37 @@ describe('AuthorizationCodeGrantType', function() {
model.saveToken.firstCall.args[1].should.equal(client);
model.saveToken.firstCall.args[2].should.equal(user);
model.saveToken.firstCall.thisValue.should.equal(model);
handler.validateScope.callCount.should.equal(1);
})
.catch(should.fail);
});
});

describe('saveToken() - no scope', function() {
it('should call `model.saveToken()`', function() {
const client = {};
const user = {};
const model = {
getAuthorizationCode: function() {},
revokeAuthorizationCode: function() {},
saveToken: sinon.stub().returns(true),
validateScope: function(u, c, s){ return null; }
};
const handler = new AuthorizationCodeGrantType({ accessTokenLifetime: 120, model: model });

sinon.stub(handler, 'generateAccessToken').returns(Promise.resolve('foo'));
sinon.stub(handler, 'generateRefreshToken').returns(Promise.resolve('bar'));
sinon.stub(handler, 'getAccessTokenExpiresAt').returns(Promise.resolve('biz'));
sinon.stub(handler, 'getRefreshTokenExpiresAt').returns(Promise.resolve('baz'));

return handler.saveToken(user, client, 'foobar', null)
.then(function() {
model.saveToken.callCount.should.equal(1);
model.saveToken.firstCall.args.should.have.length(3);
model.saveToken.firstCall.args[0].should.eql({ accessToken: 'foo', authorizationCode: 'foobar', accessTokenExpiresAt: 'biz', refreshToken: 'bar', refreshTokenExpiresAt: 'baz', scope: null });
model.saveToken.firstCall.args[1].should.equal(client);
model.saveToken.firstCall.args[2].should.equal(user);
model.saveToken.firstCall.thisValue.should.equal(model);
})
.catch(should.fail);
});
Expand Down