120 lines
3.3 KiB
JavaScript
120 lines
3.3 KiB
JavaScript
|
/*
|
||
|
* webhook-test.js: Tests for instances of the Webhook transport
|
||
|
*
|
||
|
* (C) 2011 Marak Squires
|
||
|
* MIT LICENSE
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
var path = require('path'),
|
||
|
vows = require('vows'),
|
||
|
fs = require('fs'),
|
||
|
http = require('http'),
|
||
|
https = require('https'),
|
||
|
assert = require('assert'),
|
||
|
winston = require('../../lib/winston'),
|
||
|
helpers = require('../helpers');
|
||
|
|
||
|
var webhookTransport = new (winston.transports.Webhook)({
|
||
|
"host": "localhost",
|
||
|
"port": 8080,
|
||
|
"path": "/winston-test"
|
||
|
});
|
||
|
|
||
|
var httpsWebhookTransport = new (winston.transports.Webhook)({
|
||
|
"host": "localhost",
|
||
|
"port": 8081,
|
||
|
"path": "/winston-test",
|
||
|
"ssl": true
|
||
|
});
|
||
|
|
||
|
var authWebhookTransport = new (winston.transports.Webhook)({
|
||
|
"host": "localhost",
|
||
|
"port": 8080,
|
||
|
"path": "/winston-auth-test",
|
||
|
"auth": {
|
||
|
"username": "winston",
|
||
|
"password": "churchill"
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var requestsAuthenticated = true;
|
||
|
|
||
|
var server = http.createServer(function (req, res) {
|
||
|
if (req.url == '/winston-auth-test') {
|
||
|
//
|
||
|
// Test if request has been correctly authenticated
|
||
|
//
|
||
|
// Strip 'Basic' from Authorization header
|
||
|
var signature = req.headers['authorization'].substr(6);
|
||
|
requestsAuthenticated = requestsAuthenticated &&
|
||
|
new Buffer(signature, 'base64').toString('utf8') == 'winston:churchill';
|
||
|
}
|
||
|
res.end();
|
||
|
});
|
||
|
|
||
|
server.listen(8080);
|
||
|
|
||
|
|
||
|
var httpsServer = https.createServer({
|
||
|
cert: fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'keys', 'agent2-cert.pem')),
|
||
|
key: fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'keys', 'agent2-key.pem'))
|
||
|
}, function (req, res) {
|
||
|
res.end();
|
||
|
});
|
||
|
|
||
|
httpsServer.listen(8081);
|
||
|
|
||
|
vows.describe('winston/transports/webhook').addBatch({
|
||
|
"An instance of the Webhook Transport": {
|
||
|
"when passed valid options": {
|
||
|
"should have the proper methods defined": function () {
|
||
|
helpers.assertWebhook(webhookTransport);
|
||
|
},
|
||
|
"the log() method": helpers.testNpmLevels(webhookTransport, "should respond with true", function (ign, err, logged) {
|
||
|
assert.isNull(err);
|
||
|
assert.isTrue(logged);
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
"An https instance of the Webhook Transport": {
|
||
|
"when passed valid options": {
|
||
|
"should have the proper methods defined": function () {
|
||
|
helpers.assertWebhook(httpsWebhookTransport);
|
||
|
},
|
||
|
"the log() method": helpers.testNpmLevels(httpsWebhookTransport, "should respond with true", function (ign, err, logged) {
|
||
|
assert.isNull(err);
|
||
|
assert.isTrue(logged);
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
"An http Basic Auth instance of the Webhook Transport": {
|
||
|
"when passed valid options": {
|
||
|
"should have the proper methods defined": function () {
|
||
|
helpers.assertWebhook(authWebhookTransport);
|
||
|
},
|
||
|
"the log() method": helpers.testNpmLevels(authWebhookTransport, "should respond with true", function (ign, err, logged) {
|
||
|
assert.isNull(err);
|
||
|
assert.isTrue(logged);
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}).addBatch({
|
||
|
"When the tests are over": {
|
||
|
topic: function () {
|
||
|
//
|
||
|
// Delay destruction of the server since the
|
||
|
// WebHook transport responds before the request
|
||
|
// has actually be completed.
|
||
|
//
|
||
|
setTimeout(this.callback, 1000);
|
||
|
},
|
||
|
"the server should cleanup": function () {
|
||
|
server.close();
|
||
|
},
|
||
|
"requests have been correctly authenticated": function () {
|
||
|
assert.ok(requestsAuthenticated);
|
||
|
}
|
||
|
}
|
||
|
}).export(module);
|