Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / log4js / test / configuration-test.js
1 "use strict";
2 var assert = require('assert')
3 , vows = require('vows')
4 , sandbox = require('sandboxed-module');
5
6 function makeTestAppender() {
7   return {
8     configure: function(config, options) {
9       this.configureCalled = true;
10       this.config = config;
11       this.options = options;
12       return this.appender();
13     },
14     appender: function() {
15       var self = this;
16       return function(logEvt) { self.logEvt = logEvt; };
17     }
18   };
19 }
20
21 vows.describe('log4js configure').addBatch({
22   'appenders': {
23     'when specified by type': {
24       topic: function() {
25         var testAppender = makeTestAppender(),
26         log4js = sandbox.require(
27           '../lib/log4js',
28           {
29             requires: {
30               './appenders/cheese': testAppender
31             }
32           }
33         );
34         log4js.configure(
35           {
36             appenders: [
37               { type: "cheese", flavour: "gouda" }
38             ]
39           },
40           { pants: "yes" }
41         );
42         return testAppender;
43       },
44       'should load appender': function(testAppender) {
45         assert.ok(testAppender.configureCalled);
46       },
47       'should pass config to appender': function(testAppender) {
48         assert.equal(testAppender.config.flavour, 'gouda');
49       },
50       'should pass log4js options to appender': function(testAppender) {
51         assert.equal(testAppender.options.pants, 'yes');
52       }
53     },
54     'when core appender loaded via loadAppender': {
55       topic: function() {
56         var testAppender = makeTestAppender(),
57         log4js = sandbox.require(
58           '../lib/log4js',
59           { requires: { './appenders/cheese': testAppender } }
60         );
61         
62         log4js.loadAppender('cheese');
63         return log4js;
64       },
65       'should load appender from ../lib/appenders': function(log4js) {
66         assert.ok(log4js.appenders.cheese);
67       },
68       'should add appender configure function to appenderMakers' : function(log4js) {
69         assert.isFunction(log4js.appenderMakers.cheese);
70       }
71     },
72     'when appender in node_modules loaded via loadAppender': {
73       topic: function() {
74         var testAppender = makeTestAppender(),
75         log4js = sandbox.require(
76           '../lib/log4js',
77           { requires: { 'some/other/external': testAppender } }
78         );
79         log4js.loadAppender('some/other/external');
80         return log4js;
81       },
82       'should load appender via require': function(log4js) {
83         assert.ok(log4js.appenders['some/other/external']);
84       },
85       'should add appender configure function to appenderMakers': function(log4js) {
86         assert.isFunction(log4js.appenderMakers['some/other/external']);
87       }
88     },
89     'when appender object loaded via loadAppender': {
90       topic: function() {
91         var testAppender = makeTestAppender(),
92             log4js = sandbox.require('../lib/log4js');
93
94         log4js.loadAppender('some/other/external', testAppender);
95         return log4js;
96       },
97       'should load appender with provided object': function(log4js) {
98         assert.ok(log4js.appenders['some/other/external']);
99       },
100       'should add appender configure function to appenderMakers': function(log4js) {
101         assert.isFunction(log4js.appenderMakers['some/other/external']);
102       }
103     },
104     'when configuration file loaded via LOG4JS_CONFIG environment variable': {
105       topic: function() {
106         process.env.LOG4JS_CONFIG = 'some/path/to/mylog4js.json';
107         var fileRead = 0,
108         modulePath = 'some/path/to/mylog4js.json',
109         pathsChecked = [],
110         mtime = new Date(),
111         fakeFS = {
112           config: { appenders: [ { type: 'console', layout: { type: 'messagePassThrough' } } ],
113                     levels: { 'a-test' : 'INFO' } },
114           readdirSync: function(dir) {
115             return require('fs').readdirSync(dir);
116           },
117           readFileSync: function (file, encoding) {
118             fileRead += 1;
119             assert.isString(file);
120             assert.equal(file, modulePath);
121             assert.equal(encoding, 'utf8');
122             return JSON.stringify(fakeFS.config);
123           },
124           statSync: function (path) {
125             pathsChecked.push(path);
126             if (path === modulePath) {
127               return { mtime: mtime };
128             } else {
129               throw new Error("no such file");
130             }
131           }
132         },
133         log4js = sandbox.require(
134           '../lib/log4js',
135           {
136             requires: {
137               'fs': fakeFS,
138             }
139           }
140         );
141         delete process.env.LOG4JS_CONFIG;
142         return fileRead;
143       },
144       'should load the specified local configuration file' : function(fileRead) {
145         assert.equal(fileRead, 1);
146       }
147     }
148   }
149 }).exportTo(module);