google-id-token-verifier
Version:
A small library to validate a google ID token for consuming it in node.js backend server.
57 lines (52 loc) • 2.05 kB
JavaScript
;
var _ = require('underscore');
var assert = require('assert');
var sinon = require('sinon');
var request = require('request');
var certCache = require('../lib/certCache');
var openid_configuration = require('./fixtures/openid-configuration');
var testOAuthCerts = require('./fixtures/oauthcerts');
describe('certCache', function () {
before(function (done) {
var cacheAge = (new Date().getTime() / 1000) + 1000;
var stub = sinon.stub(request, 'get');
stub
.onFirstCall().yields(new Error('timeout'), { statusCode: 404, headers: {} }, null);
stub
.onSecondCall().yields(null, { statusCode: 200, headers: {} }, openid_configuration);
stub
.onThirdCall().yields(new Error('timeout'), { statusCode: 404, headers: {} }, null);
stub
.yields(null, { statusCode: 200, headers: {
'cache-control': 'public, max-age=' + cacheAge + ', must-revalidate, no-transform'
} }, testOAuthCerts);
done();
});
after(function (done) {
request.get.restore();
done();
});
it('should succeed to get oauthcerts with refresh cache', function (done) {
certCache.global.getFederatedGoogleCerts(function (err, keys) {
assert.equal(_.isEmpty(err), false);
assert.equal(request.get.callCount, 1);
assert.equal(_.isEmpty(keys), true);
certCache.global.getFederatedGoogleCerts(function (err, keys) {
assert.equal(_.isEmpty(err), false);
assert.equal(request.get.callCount, 3);
assert.equal(_.isEmpty(keys), true);
certCache.global.getFederatedGoogleCerts(function (err, keys) {
assert.equal(_.isEmpty(err), true);
assert.equal(request.get.callCount, 4);
assert.equal(_.isEmpty(keys), false);
certCache.global.getFederatedGoogleCerts(function (err, keys) {
assert.equal(_.isEmpty(err), true);
assert.equal(request.get.callCount, 4);
assert.equal(_.isEmpty(keys), false);
done();
});
});
});
});
});
});