nolog-test.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. "use strict";
  2. var vows = require('vows')
  3. , assert = require('assert')
  4. , levels = require('../lib/levels');
  5. function MockLogger() {
  6. var that = this;
  7. this.messages = [];
  8. this.log = function(level, message, exception) {
  9. that.messages.push({ level: level, message: message });
  10. };
  11. this.isLevelEnabled = function(level) {
  12. return level.isGreaterThanOrEqualTo(that.level);
  13. };
  14. this.level = levels.TRACE;
  15. }
  16. function MockRequest(remoteAddr, method, originalUrl) {
  17. this.socket = { remoteAddress: remoteAddr };
  18. this.originalUrl = originalUrl;
  19. this.method = method;
  20. this.httpVersionMajor = '5';
  21. this.httpVersionMinor = '0';
  22. this.headers = {};
  23. }
  24. function MockResponse(statusCode) {
  25. this.statusCode = statusCode;
  26. this.end = function(chunk, encoding) {
  27. };
  28. }
  29. vows.describe('log4js connect logger').addBatch({
  30. 'getConnectLoggerModule': {
  31. topic: function() {
  32. var clm = require('../lib/connect-logger');
  33. return clm;
  34. },
  35. 'should return a "connect logger" factory' : function(clm) {
  36. assert.isObject(clm);
  37. },
  38. 'nolog String' : {
  39. topic: function(clm) {
  40. var ml = new MockLogger();
  41. var cl = clm.connectLogger(ml, { nolog: "\\.gif" });
  42. return {cl: cl, ml: ml};
  43. },
  44. 'check unmatch url request': {
  45. topic: function(d){
  46. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.png'); // not gif
  47. var res = new MockResponse(200);
  48. d.cl(req, res, function() { });
  49. res.end('chunk', 'encoding');
  50. return d.ml.messages;
  51. },
  52. 'check message': function(messages){
  53. assert.isArray(messages);
  54. assert.equal(messages.length, 1);
  55. assert.ok(levels.INFO.isEqualTo(messages[0].level));
  56. assert.include(messages[0].message, 'GET');
  57. assert.include(messages[0].message, 'http://url');
  58. assert.include(messages[0].message, 'my.remote.addr');
  59. assert.include(messages[0].message, '200');
  60. messages.pop();
  61. }
  62. },
  63. 'check match url request': {
  64. topic: function(d) {
  65. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.gif'); // gif
  66. var res = new MockResponse(200);
  67. d.cl(req, res, function() { });
  68. res.end('chunk', 'encoding');
  69. return d.ml.messages;
  70. },
  71. 'check message': function(messages) {
  72. assert.isArray(messages);
  73. assert.equal(messages.length, 0);
  74. }
  75. }
  76. },
  77. 'nolog Strings' : {
  78. topic: function(clm) {
  79. var ml = new MockLogger();
  80. var cl = clm.connectLogger(ml, {nolog: "\\.gif|\\.jpe?g"});
  81. return {cl: cl, ml: ml};
  82. },
  83. 'check unmatch url request (png)': {
  84. topic: function(d){
  85. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.png'); // not gif
  86. var res = new MockResponse(200);
  87. d.cl(req, res, function() { });
  88. res.end('chunk', 'encoding');
  89. return d.ml.messages;
  90. },
  91. 'check message': function(messages){
  92. assert.isArray(messages);
  93. assert.equal(messages.length, 1);
  94. assert.ok(levels.INFO.isEqualTo(messages[0].level));
  95. assert.include(messages[0].message, 'GET');
  96. assert.include(messages[0].message, 'http://url');
  97. assert.include(messages[0].message, 'my.remote.addr');
  98. assert.include(messages[0].message, '200');
  99. messages.pop();
  100. }
  101. },
  102. 'check match url request (gif)': {
  103. topic: function(d) {
  104. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.gif'); // gif
  105. var res = new MockResponse(200);
  106. d.cl(req, res, function() { });
  107. res.end('chunk', 'encoding');
  108. return d.ml.messages;
  109. },
  110. 'check message': function(messages) {
  111. assert.isArray(messages);
  112. assert.equal(messages.length, 0);
  113. }
  114. },
  115. 'check match url request (jpeg)': {
  116. topic: function(d) {
  117. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.jpeg'); // gif
  118. var res = new MockResponse(200);
  119. d.cl(req, res, function() { });
  120. res.end('chunk', 'encoding');
  121. return d.ml.messages;
  122. },
  123. 'check message': function(messages) {
  124. assert.isArray(messages);
  125. assert.equal(messages.length, 0);
  126. }
  127. }
  128. },
  129. 'nolog Array<String>' : {
  130. topic: function(clm) {
  131. var ml = new MockLogger();
  132. var cl = clm.connectLogger(ml, {nolog: ["\\.gif", "\\.jpe?g"]});
  133. return {cl: cl, ml: ml};
  134. },
  135. 'check unmatch url request (png)': {
  136. topic: function(d){
  137. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.png'); // not gif
  138. var res = new MockResponse(200);
  139. d.cl(req, res, function() { });
  140. res.end('chunk', 'encoding');
  141. return d.ml.messages;
  142. },
  143. 'check message': function(messages){
  144. assert.isArray(messages);
  145. assert.equal(messages.length, 1);
  146. assert.ok(levels.INFO.isEqualTo(messages[0].level));
  147. assert.include(messages[0].message, 'GET');
  148. assert.include(messages[0].message, 'http://url');
  149. assert.include(messages[0].message, 'my.remote.addr');
  150. assert.include(messages[0].message, '200');
  151. messages.pop();
  152. }
  153. },
  154. 'check match url request (gif)': {
  155. topic: function(d) {
  156. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.gif'); // gif
  157. var res = new MockResponse(200);
  158. d.cl(req, res, function() { });
  159. res.end('chunk', 'encoding');
  160. return d.ml.messages;
  161. },
  162. 'check message': function(messages) {
  163. assert.isArray(messages);
  164. assert.equal(messages.length, 0);
  165. }
  166. },
  167. 'check match url request (jpeg)': {
  168. topic: function(d) {
  169. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.jpeg'); // gif
  170. var res = new MockResponse(200);
  171. d.cl(req, res, function() { });
  172. res.end('chunk', 'encoding');
  173. return d.ml.messages;
  174. },
  175. 'check message': function(messages) {
  176. assert.isArray(messages);
  177. assert.equal(messages.length, 0);
  178. }
  179. },
  180. },
  181. 'nolog RegExp' : {
  182. topic: function(clm) {
  183. var ml = new MockLogger();
  184. var cl = clm.connectLogger(ml, {nolog: /\.gif|\.jpe?g/});
  185. return {cl: cl, ml: ml};
  186. },
  187. 'check unmatch url request (png)': {
  188. topic: function(d){
  189. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.png'); // not gif
  190. var res = new MockResponse(200);
  191. d.cl(req, res, function() { });
  192. res.end('chunk', 'encoding');
  193. return d.ml.messages;
  194. },
  195. 'check message': function(messages){
  196. assert.isArray(messages);
  197. assert.equal(messages.length, 1);
  198. assert.ok(levels.INFO.isEqualTo(messages[0].level));
  199. assert.include(messages[0].message, 'GET');
  200. assert.include(messages[0].message, 'http://url');
  201. assert.include(messages[0].message, 'my.remote.addr');
  202. assert.include(messages[0].message, '200');
  203. messages.pop();
  204. }
  205. },
  206. 'check match url request (gif)': {
  207. topic: function(d) {
  208. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.gif'); // gif
  209. var res = new MockResponse(200);
  210. d.cl(req, res, function() { });
  211. res.end('chunk', 'encoding');
  212. return d.ml.messages;
  213. },
  214. 'check message': function(messages) {
  215. assert.isArray(messages);
  216. assert.equal(messages.length, 0);
  217. }
  218. },
  219. 'check match url request (jpeg)': {
  220. topic: function(d) {
  221. var req = new MockRequest('my.remote.addr', 'GET', 'http://url/hoge.jpeg'); // gif
  222. var res = new MockResponse(200);
  223. d.cl(req, res, function() { });
  224. res.end('chunk', 'encoding');
  225. return d.ml.messages;
  226. },
  227. 'check message': function(messages) {
  228. assert.isArray(messages);
  229. assert.equal(messages.length, 0);
  230. }
  231. }
  232. }
  233. }
  234. }).export(module);