diff --git a/lib/rest/client.js b/lib/rest/client.js index 492c32d..fdc3cbe 100644 --- a/lib/rest/client.js +++ b/lib/rest/client.js @@ -31,6 +31,10 @@ exports.Response = function() { return new Response(); }; +exports.AccessToken = function(authId, authToken, username, validity, uid) { + return new AccessToken(authId, authToken, username, validity, uid); +}; + exports.validateV3Signature = function(method, uri, nonce, auth_token, v3_signature, params={}) { return validateV3Signature(method, uri, nonce, auth_token, v3_signature, params); }; diff --git a/lib/utils/jwt.js b/lib/utils/jwt.js index 1ad47cd..67fd31c 100644 --- a/lib/utils/jwt.js +++ b/lib/utils/jwt.js @@ -25,7 +25,7 @@ export function AccessToken(authId, authToken, username, validityOptions = {}, u if (validityOptions.validTill != null) { this.lifetime = validityOptions.validTill - this.validFrom; } else { - this.lifetime = 86400; + this.lifetime = validityOptions.lifetime || 86400; } } else { this.lifetime = validityOptions.lifetime || 86400; diff --git a/test/jwt.js b/test/jwt.js index 2eeef06..d4f93e3 100644 --- a/test/jwt.js +++ b/test/jwt.js @@ -4,9 +4,26 @@ import sinon from 'sinon'; import {AccessToken} from '../lib/utils/jwt'; describe('Jwt', function () { - it('should be created', function () { + it('should be created with validFrom and lifetime', function () { let acctkn = new AccessToken('MADADADADADADADADADA', 'qwerty', 'username', {validFrom: 12121212, lifetime: 300}, 'username-12345'); acctkn.addVoiceGrants(true, true); - assert.equal(acctkn.toJwt(), 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InBsaXZvO3Y9MSJ9.eyJqdGkiOiJ1c2VybmFtZS0xMjM0NSIsImlzcyI6Ik1BREFEQURBREFEQURBREFEQURBIiwic3ViIjoidXNlcm5hbWUiLCJuYmYiOjEyMTIxMjEyLCJleHAiOjEyMjA1ODEyLCJncmFudHMiOnsidm9pY2UiOnsiaW5jb21pbmdfYWxsb3ciOnRydWUsIm91dGdvaW5nX2FsbG93Ijp0cnVlfX19.T0li-AM7WAhioMwRdwYuIA-N7BRkhf8o9g366py7w1s'); + assert.equal(acctkn.toJwt(), 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InBsaXZvO3Y9MSJ9.eyJqdGkiOiJ1c2VybmFtZS0xMjM0NSIsImlzcyI6Ik1BREFEQURBREFEQURBREFEQURBIiwic3ViIjoidXNlcm5hbWUiLCJuYmYiOjEyMTIxMjEyLCJleHAiOjEyMTIxNTEyLCJncmFudHMiOnsidm9pY2UiOnsiaW5jb21pbmdfYWxsb3ciOnRydWUsIm91dGdvaW5nX2FsbG93Ijp0cnVlfX19.ilC13HrMls4w3UHWZsZNudAALgWaSBkkXmZZ-VnT6GU'); + }); + it('should be created with validFrom and validTill', function () { + let acctkn = new AccessToken('MADADADADADADADADADA', 'qwerty', 'username', {validFrom: 12121212, validTill: 12121512}, 'username-12345'); + acctkn.addVoiceGrants(true, true); + assert.equal(acctkn.toJwt(), 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InBsaXZvO3Y9MSJ9.eyJqdGkiOiJ1c2VybmFtZS0xMjM0NSIsImlzcyI6Ik1BREFEQURBREFEQURBREFEQURBIiwic3ViIjoidXNlcm5hbWUiLCJuYmYiOjEyMTIxMjEyLCJleHAiOjEyMTIxNTEyLCJncmFudHMiOnsidm9pY2UiOnsiaW5jb21pbmdfYWxsb3ciOnRydWUsIm91dGdvaW5nX2FsbG93Ijp0cnVlfX19.ilC13HrMls4w3UHWZsZNudAALgWaSBkkXmZZ-VnT6GU'); + }); + it('should be created with lifetime and validTill', function () { + let acctkn = new AccessToken('MADADADADADADADADADA', 'qwerty', 'username', {lifetime: 300, validTill: 12121512}, 'username-12345'); + acctkn.addVoiceGrants(true, true); + assert.equal(acctkn.toJwt(), 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6InBsaXZvO3Y9MSJ9.eyJqdGkiOiJ1c2VybmFtZS0xMjM0NSIsImlzcyI6Ik1BREFEQURBREFEQURBREFEQURBIiwic3ViIjoidXNlcm5hbWUiLCJuYmYiOjEyMTIxMjEyLCJleHAiOjEyMTIxNTEyLCJncmFudHMiOnsidm9pY2UiOnsiaW5jb21pbmdfYWxsb3ciOnRydWUsIm91dGdvaW5nX2FsbG93Ijp0cnVlfX19.ilC13HrMls4w3UHWZsZNudAALgWaSBkkXmZZ-VnT6GU'); + }); + it('should fail with validFrom, lifetime and validTill', function () { + try { + let acctkn = new AccessToken('MADADADADADADADADADA', 'qwerty', 'username', {validFrom: 12121212, lifetime: 300, validTill: 12121512}, 'username-12345'); + } catch (e) { + assert.equal(e.toString(), "Error: Please define at maximum any two of validFrom, lifetime and validTill"); + } }); });