http.test.js
1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
* http-test.js: Tests for instances of the HTTP transport
*
* MIT LICENSE
*/
var path = require('path'),
http = require('http'),
fs = require('fs'),
hock = require('hock'),
assume = require('assume'),
Http = require('../../lib/winston/transports/http'),
helpers = require('../helpers');
var host = '127.0.0.1';
function mockHttpServer(opts, done) {
if (!done && typeof opts === 'function') {
done = opts;
opts = {};
}
var mock = hock.createHock();
opts.path = opts.path || 'log';
opts.payload = opts.payload || {
level: 'info',
message: 'hello',
meta: {}
};
mock
.post('/' + opts.path, opts.payload)
.min(1)
.max(1)
.reply(200);
var server = http.createServer(mock.handler);
server.listen(0, '0.0.0.0', done);
return { server, mock };
}
describe('Http({ host, port, path })', function () {
var context;
var server;
beforeEach(function (done) {
context = mockHttpServer(done);
server = context.server;
});
it('should send logs over HTTP', function (done) {
var port = server.address().port;
var httpTransport = new Http({
host: host,
port: port,
path: 'log'
}).on('error', function (err) {
assume(err).falsy();
}).on('logged', function () {
context.mock.done(function (err) {
if (err) { assume(err).falsy(); }
done();
});
});
httpTransport.log({
level: 'info',
message: 'hello',
meta: {}
}, function (err) {
if (err) { assume(err).falsy(); }
});
});
afterEach(function (done) {
server.close(done.bind(null, null));
});
});