Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f50fab2

Browse files
author
Gareth Jones
committed
improved coverage for connect logger
1 parent f1c0767 commit f50fab2

File tree

1 file changed

+74
-17
lines changed

1 file changed

+74
-17
lines changed

test/connect-logger-test.js

Lines changed: 74 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,22 @@ function MockRequest(remoteAddr, method, originalUrl) {
3131

3232
}
3333

34-
function MockResponse(statusCode) {
35-
36-
this.statusCode = statusCode;
34+
function MockResponse() {
3735

38-
this.end = function(chunk, encoding) {
39-
36+
this.end = function(chunk, encoding) {
4037
};
4138

39+
this.writeHead = function(code, headers) {
40+
};
41+
42+
}
43+
44+
function request(cl, method, url, code) {
45+
var req = new MockRequest('my.remote.addr', method, url);
46+
var res = new MockResponse();
47+
cl(req, res, function() {});
48+
res.writeHead(code);
49+
res.end('chunk','encoding');
4250
}
4351

4452
vows.describe('log4js connect logger').addBatch({
@@ -68,10 +76,7 @@ vows.describe('log4js connect logger').addBatch({
6876
topic: function(clm) {
6977
var ml = new MockLogger();
7078
var cl = clm.connectLogger(ml);
71-
var req = new MockRequest('my.remote.addr', 'GET', 'http://url');
72-
var res = new MockResponse(200);
73-
cl(req, res, function() { });
74-
res.end('chunk', 'encoding');
79+
request(cl, 'GET', 'http://url', 200);
7580
return ml.messages;
7681
},
7782

@@ -91,10 +96,7 @@ vows.describe('log4js connect logger').addBatch({
9196
var ml = new MockLogger();
9297
ml.level = levels.FATAL;
9398
var cl = clm.connectLogger(ml);
94-
var req = new MockRequest('my.remote.addr', 'GET', 'http://url');
95-
var res = new MockResponse(200);
96-
cl(req, res, function() { });
97-
res.end('chunk', 'encoding');
99+
request(cl, 'GET', 'http://url', 200);
98100
return ml.messages;
99101
},
100102

@@ -109,10 +111,7 @@ vows.describe('log4js connect logger').addBatch({
109111
var ml = new MockLogger();
110112
ml.level = levels.INFO;
111113
var cl = clm.connectLogger(ml, { level: levels.INFO, format: ':method :url' } );
112-
var req = new MockRequest('my.remote.addr', 'GET', 'http://url');
113-
var res = new MockResponse(200);
114-
cl(req, res, function() { });
115-
res.end('chunk', 'encoding');
114+
request(cl, 'GET', 'http://url', 200);
116115
return ml.messages;
117116
},
118117

@@ -122,6 +121,64 @@ vows.describe('log4js connect logger').addBatch({
122121
assert.ok(levels.INFO.isEqualTo(messages[0].level));
123122
assert.equal(messages[0].message, 'GET http://url');
124123
}
124+
},
125+
126+
'logger with options as string': {
127+
topic: function(clm) {
128+
var ml = new MockLogger();
129+
ml.level = levels.INFO;
130+
var cl = clm.connectLogger(ml, ':method :url');
131+
request(cl, 'POST', 'http://meh', 200);
132+
return ml.messages;
133+
},
134+
'should use the passed in format': function(messages) {
135+
assert.equal(messages[0].message, 'POST http://meh');
136+
}
137+
},
138+
139+
'auto log levels': {
140+
topic: function(clm) {
141+
var ml = new MockLogger();
142+
ml.level = levels.INFO;
143+
var cl = clm.connectLogger(ml, { level: 'auto', format: ':method :url' });
144+
request(cl, 'GET', 'http://meh', 200);
145+
request(cl, 'GET', 'http://meh', 201);
146+
request(cl, 'GET', 'http://meh', 302);
147+
request(cl, 'GET', 'http://meh', 404);
148+
request(cl, 'GET', 'http://meh', 500);
149+
return ml.messages;
150+
},
151+
152+
'should use INFO for 2xx': function(messages) {
153+
assert.ok(levels.INFO.isEqualTo(messages[0].level));
154+
assert.ok(levels.INFO.isEqualTo(messages[1].level));
155+
},
156+
157+
'should use WARN for 3xx': function(messages) {
158+
assert.ok(levels.WARN.isEqualTo(messages[2].level));
159+
},
160+
161+
'should use ERROR for 4xx': function(messages) {
162+
assert.ok(levels.ERROR.isEqualTo(messages[3].level));
163+
},
164+
165+
'should use ERROR for 5xx': function(messages) {
166+
assert.ok(levels.ERROR.isEqualTo(messages[4].level));
167+
}
168+
},
169+
170+
'format using a function': {
171+
topic: function(clm) {
172+
var ml = new MockLogger();
173+
ml.level = levels.INFO;
174+
var cl = clm.connectLogger(ml, function(req, res, formatFn) { return "I was called"; });
175+
request(cl, 'GET', 'http://blah', 200);
176+
return ml.messages;
177+
},
178+
179+
'should call the format function': function(messages) {
180+
assert.equal(messages[0].message, 'I was called');
181+
}
125182
}
126183

127184
}

0 commit comments

Comments
 (0)