@@ -31,14 +31,22 @@ function MockRequest(remoteAddr, method, originalUrl) {
31
31
32
32
}
33
33
34
- function MockResponse ( statusCode ) {
35
-
36
- this . statusCode = statusCode ;
34
+ function MockResponse ( ) {
37
35
38
- this . end = function ( chunk , encoding ) {
39
-
36
+ this . end = function ( chunk , encoding ) {
40
37
} ;
41
38
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' ) ;
42
50
}
43
51
44
52
vows . describe ( 'log4js connect logger' ) . addBatch ( {
@@ -68,10 +76,7 @@ vows.describe('log4js connect logger').addBatch({
68
76
topic : function ( clm ) {
69
77
var ml = new MockLogger ( ) ;
70
78
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 ) ;
75
80
return ml . messages ;
76
81
} ,
77
82
@@ -91,10 +96,7 @@ vows.describe('log4js connect logger').addBatch({
91
96
var ml = new MockLogger ( ) ;
92
97
ml . level = levels . FATAL ;
93
98
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 ) ;
98
100
return ml . messages ;
99
101
} ,
100
102
@@ -109,10 +111,7 @@ vows.describe('log4js connect logger').addBatch({
109
111
var ml = new MockLogger ( ) ;
110
112
ml . level = levels . INFO ;
111
113
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 ) ;
116
115
return ml . messages ;
117
116
} ,
118
117
@@ -122,6 +121,64 @@ vows.describe('log4js connect logger').addBatch({
122
121
assert . ok ( levels . INFO . isEqualTo ( messages [ 0 ] . level ) ) ;
123
122
assert . equal ( messages [ 0 ] . message , 'GET http://url' ) ;
124
123
}
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
+ }
125
182
}
126
183
127
184
}
0 commit comments