react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / request / node_modules / hawk / test / message.js
81146 views// Load modules12var Url = require('url');3var Code = require('code');4var Hawk = require('../lib');5var Hoek = require('hoek');6var Lab = require('lab');789// Declare internals1011var internals = {};121314// Test shortcuts1516var lab = exports.lab = Lab.script();17var describe = lab.experiment;18var it = lab.test;19var expect = Code.expect;202122describe('Hawk', function () {2324var credentialsFunc = function (id, callback) {2526var credentials = {27id: id,28key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',29algorithm: (id === '1' ? 'sha1' : 'sha256'),30user: 'steve'31};3233return callback(null, credentials);34};3536it('should generate an authorization then successfully parse it', function (done) {3738credentialsFunc('123456', function (err, credentials) {3940var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });41expect(auth).to.exist();4243Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {4445expect(err).to.not.exist();46expect(credentials.user).to.equal('steve');47done();48});49});50});5152it('should fail authorization on mismatching host', function (done) {5354credentialsFunc('123456', function (err, credentials) {5556var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });57expect(auth).to.exist();5859Hawk.server.authenticateMessage('example1.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {6061expect(err).to.exist();62expect(err.message).to.equal('Bad mac');63done();64});65});66});6768it('should fail authorization on stale timestamp', function (done) {6970credentialsFunc('123456', function (err, credentials) {7172var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });73expect(auth).to.exist();7475Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { localtimeOffsetMsec: 100000 }, function (err, credentials) {7677expect(err).to.exist();78expect(err.message).to.equal('Stale timestamp');79done();80});81});82});8384it('overrides timestampSkewSec', function (done) {8586credentialsFunc('123456', function (err, credentials) {8788var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials, localtimeOffsetMsec: 100000 });89expect(auth).to.exist();9091Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { timestampSkewSec: 500 }, function (err, credentials) {9293expect(err).to.not.exist();94done();95});96});97});9899it('should fail authorization on invalid authorization', function (done) {100101credentialsFunc('123456', function (err, credentials) {102103var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });104expect(auth).to.exist();105delete auth.id;106107Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {108109expect(err).to.exist();110expect(err.message).to.equal('Invalid authorization');111done();112});113});114});115116it('should fail authorization on bad hash', function (done) {117118credentialsFunc('123456', function (err, credentials) {119120var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });121expect(auth).to.exist();122123Hawk.server.authenticateMessage('example.com', 8080, 'some message1', auth, credentialsFunc, {}, function (err, credentials) {124125expect(err).to.exist();126expect(err.message).to.equal('Bad message hash');127done();128});129});130});131132it('should fail authorization on nonce error', function (done) {133134credentialsFunc('123456', function (err, credentials) {135136var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });137expect(auth).to.exist();138139Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { nonceFunc: function (nonce, ts, callback) { callback (new Error('kaboom')); } }, function (err, credentials) {140141expect(err).to.exist();142expect(err.message).to.equal('Invalid nonce');143done();144});145});146});147148it('should fail authorization on credentials error', function (done) {149150credentialsFunc('123456', function (err, credentials) {151152var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });153expect(auth).to.exist();154155var errFunc = function (id, callback) {156157callback(new Error('kablooey'));158};159160Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {161162expect(err).to.exist();163expect(err.message).to.equal('kablooey');164done();165});166});167});168169it('should fail authorization on missing credentials', function (done) {170171credentialsFunc('123456', function (err, credentials) {172173var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });174expect(auth).to.exist();175176var errFunc = function (id, callback) {177178callback();179};180181Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {182183expect(err).to.exist();184expect(err.message).to.equal('Unknown credentials');185done();186});187});188});189190it('should fail authorization on invalid credentials', function (done) {191192credentialsFunc('123456', function (err, credentials) {193194var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });195expect(auth).to.exist();196197var errFunc = function (id, callback) {198199callback(null, {});200};201202Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {203204expect(err).to.exist();205expect(err.message).to.equal('Invalid credentials');206done();207});208});209});210211it('should fail authorization on invalid credentials algorithm', function (done) {212213credentialsFunc('123456', function (err, credentials) {214215var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });216expect(auth).to.exist();217218var errFunc = function (id, callback) {219220callback(null, { key: '123', algorithm: '456' });221};222223Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {224225expect(err).to.exist();226expect(err.message).to.equal('Unknown algorithm');227done();228});229});230});231232it('should fail on missing host', function (done) {233234credentialsFunc('123456', function (err, credentials) {235236var auth = Hawk.client.message(null, 8080, 'some message', { credentials: credentials });237expect(auth).to.not.exist();238done();239});240});241242it('should fail on missing credentials', function (done) {243244var auth = Hawk.client.message('example.com', 8080, 'some message', {});245expect(auth).to.not.exist();246done();247});248249it('should fail on invalid algorithm', function (done) {250251credentialsFunc('123456', function (err, credentials) {252253var creds = Hoek.clone(credentials);254creds.algorithm = 'blah';255var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: creds });256expect(auth).to.not.exist();257done();258});259});260});261262263