You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.3 KiB
119 lines
3.3 KiB
/* |
|
* 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);
|
|
|