mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-06-08 08:14:57 +00:00
247 lines
7.9 KiB
JavaScript
Executable File
247 lines
7.9 KiB
JavaScript
Executable File
// Load modules
|
|
|
|
var Url = require('url');
|
|
var Lab = require('lab');
|
|
var Hoek = require('hoek');
|
|
var Hawk = require('../lib');
|
|
|
|
|
|
// Declare internals
|
|
|
|
var internals = {};
|
|
|
|
|
|
// Test shortcuts
|
|
|
|
var expect = Lab.expect;
|
|
var before = Lab.before;
|
|
var after = Lab.after;
|
|
var describe = Lab.experiment;
|
|
var it = Lab.test;
|
|
|
|
|
|
describe('Hawk', function () {
|
|
|
|
var credentialsFunc = function (id, callback) {
|
|
|
|
var credentials = {
|
|
id: id,
|
|
key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
|
|
algorithm: (id === '1' ? 'sha1' : 'sha256'),
|
|
user: 'steve'
|
|
};
|
|
|
|
return callback(null, credentials);
|
|
};
|
|
|
|
it('should generate an authorization then successfully parse it', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.not.exist;
|
|
expect(credentials.user).to.equal('steve');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on mismatching host', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
Hawk.server.authenticateMessage('example1.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Bad mac');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on stale timestamp', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { localtimeOffsetMsec: 100000 }, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Stale timestamp');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on invalid authorization', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
delete auth.id;
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Invalid authorization');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on bad hash', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message1', auth, credentialsFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Bad message hash');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on nonce error', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { nonceFunc: function (nonce, ts, callback) { callback (new Error('kaboom')); } }, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Invalid nonce');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on credentials error', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
var errFunc = function (id, callback) {
|
|
|
|
callback(new Error('kablooey'));
|
|
};
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('kablooey');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on missing credentials', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
var errFunc = function (id, callback) {
|
|
|
|
callback();
|
|
};
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Unknown credentials');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on invalid credentials', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
var errFunc = function (id, callback) {
|
|
|
|
callback(null, {});
|
|
};
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Invalid credentials');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail authorization on invalid credentials algorithm', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.exist;
|
|
|
|
var errFunc = function (id, callback) {
|
|
|
|
callback(null, { key: '123', algorithm: '456' });
|
|
};
|
|
|
|
Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) {
|
|
|
|
expect(err).to.exist;
|
|
expect(err.message).to.equal('Unknown algorithm');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should fail on missing host', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var auth = Hawk.client.message(null, 8080, 'some message', { credentials: credentials });
|
|
expect(auth).to.not.exist;
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should fail on missing credentials', function (done) {
|
|
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', {});
|
|
expect(auth).to.not.exist;
|
|
done();
|
|
});
|
|
|
|
it('should fail on invalid algorithm', function (done) {
|
|
|
|
credentialsFunc('123456', function (err, credentials) {
|
|
|
|
var creds = Hoek.clone(credentials);
|
|
creds.algorithm = 'blah';
|
|
var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: creds });
|
|
expect(auth).to.not.exist;
|
|
done();
|
|
});
|
|
});
|
|
});
|