Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / log4js / test / hipchatAppender-test.js
1 "use strict";
2 var vows = require('vows'),
3     assert = require('assert'),
4     log4js = require('../lib/log4js'),
5     sandbox = require('sandboxed-module');
6
7 function setupLogging(category, options) {
8   var lastRequest = {};
9
10   var fakeRequest = function(args, level){
11     lastRequest.notifier = this;
12     lastRequest.body = args[0];
13     lastRequest.callback = args[1];
14     lastRequest.level = level;
15   };
16
17   var fakeHipchatNotifier = {
18     'make': function(room, token, from, host, notify){
19       return {
20         'room': room,
21         'token': token,
22         'from': from || '',
23         'host': host || 'api.hipchat.com',
24         'notify': notify || false,
25         'setRoom': function(val){ this.room = val; },
26         'setFrom': function(val){ this.from = val; },
27         'setHost': function(val){ this.host = val; },
28         'setNotify': function(val){ this.notify = val; },
29         'info': function(){ fakeRequest.call(this, arguments, 'info'); },
30         'warning': function(){ fakeRequest.call(this, arguments, 'warning'); },
31         'failure': function(){ fakeRequest.call(this, arguments, 'failure'); },
32         'success': function(){ fakeRequest.call(this, arguments, 'success'); }
33       };
34     }
35   };
36
37   var hipchatModule = sandbox.require('../lib/appenders/hipchat', {
38     requires: {
39       'hipchat-notifier': fakeHipchatNotifier
40     }
41   });
42   log4js.clearAppenders();
43   log4js.addAppender(hipchatModule.configure(options), category);
44
45   return {
46     logger: log4js.getLogger(category),
47     lastRequest: lastRequest
48   };
49 }
50
51 vows.describe('HipChat appender').addBatch({
52   'when logging to HipChat v2 API': {
53     topic: function() {
54       var customCallback = function(err, res, body){ return 'works'; };
55
56       var setup = setupLogging('myCategory', {
57          "type": "hipchat",
58          "hipchat_token": "User_Token_With_Notification_Privs",
59          "hipchat_room": "Room_ID_Or_Name",
60          "hipchat_from": "Log4js_Test",
61          "hipchat_notify": true,
62          "hipchat_host": "hipchat.your-company.tld",
63          "hipchat_response_callback": customCallback
64       });
65       setup.logger.warn('Log event #1');
66       return setup;
67     },
68     'a request to hipchat_host should be sent': function (topic) {
69       assert.equal(topic.lastRequest.notifier.host, "hipchat.your-company.tld");
70       assert.equal(topic.lastRequest.notifier.notify, true);
71       assert.equal(topic.lastRequest.body, 'Log event #1');
72       assert.equal(topic.lastRequest.level, 'warning');
73     },
74     'a custom callback to the HipChat response is supported': function(topic) {
75       assert.equal(topic.lastRequest.callback(), 'works');
76     }
77   },
78   'when missing options': {
79     topic: function() {
80       var setup = setupLogging('myLogger', {
81           "type": "hipchat",
82       });
83       setup.logger.error('Log event #2');
84       return setup;
85     },
86     'it sets some defaults': function (topic) {
87       assert.equal(topic.lastRequest.notifier.host, "api.hipchat.com");
88       assert.equal(topic.lastRequest.notifier.notify, false);
89       assert.equal(topic.lastRequest.body, 'Log event #2');
90       assert.equal(topic.lastRequest.level, 'failure');
91     }
92   },
93   'when basicLayout is provided': {
94     topic: function() {
95       var setup = setupLogging('myLogger', {
96           "type": "hipchat",
97           "layout": log4js.layouts.basicLayout
98       });
99       setup.logger.debug('Log event #3');
100       return setup;
101     },
102     'it should include the timestamp': function (topic) {
103
104       // basicLayout adds [TIMESTAMP] [LEVEL] category - message
105       // e.g. [2016-06-10 11:50:53.819] [DEBUG] myLogger - Log event #23
106
107       assert.match(topic.lastRequest.body, /^\[[^\]]+\] \[[^\]]+\].*Log event \#3$/);
108       assert.equal(topic.lastRequest.level, 'info');
109     }
110   }
111
112 }).export(module);