Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / policyfile / tests / unit.test.js
1 var fspfs = require('../')
2   , fs = require('fs')
3   , http = require('http')
4   , https = require('https')
5   , net = require('net')
6   , should = require('should')
7   , assert = require('assert');
8
9 module.exports = {
10   // Library version should be Semver compatible
11   'Library version': function(){
12      fspfs.version.should.match(/^\d+\.\d+\.\d+$/);
13   }
14
15   // Creating a server instace should not cause any problems
16   // either using the new Server or createServer method.
17 , 'Create Server instance': function(){
18     var server = fspfs.createServer()
19       , server2 = new fspfs.Server({log:false}, ['blog.3rd-Eden.com:1337']);
20     
21     // server 2 options test
22     server2.log.should.be.false;
23     server2.origins.length.should.equal(1);
24     server2.origins[0].should.equal('blog.3rd-Eden.com:1337');
25     
26     // server defaults
27     (typeof server.log).should.be.equal('function');
28     server.origins.length.should.equal(1);
29     server.origins[0].should.equal('*:*');
30     
31     // instance checking, sanity check
32     assert.ok(server instanceof fspfs.Server);
33     assert.ok(!!server.buffer);
34     
35     // more options testing
36     server = fspfs.createServer(['blog.3rd-Eden.com:80']);
37     server.origins.length.should.equal(1);
38     server.origins[0].should.equal('blog.3rd-Eden.com:80');
39     
40     server = fspfs.createServer({log:false},['blog.3rd-Eden.com:80']);
41     server.log.should.be.false;
42     server.origins.length.should.equal(1);
43     server.origins[0].should.equal('blog.3rd-Eden.com:80');
44     
45   }
46
47 , 'Add origin': function(){
48     var server = fspfs.createServer();
49     server.add('google.com:80', 'blog.3rd-Eden.com:1337');
50     
51     server.origins.length.should.equal(3);
52     server.origins.indexOf('google.com:80').should.be.above(0);
53     
54     // don't allow duplicates
55     server.add('google.com:80', 'google.com:80');
56     
57     var i = server.origins.length
58       , count = 0;
59     
60     while(i--){
61       if (server.origins[i] === 'google.com:80'){
62         count++;
63       }
64     }
65     
66     count.should.equal(1);
67   }
68
69 , 'Remove origin': function(){
70     var server = fspfs.createServer();
71     server.add('google.com:80', 'blog.3rd-Eden.com:1337');
72     server.origins.length.should.equal(3);
73     
74     server.remove('google.com:80');
75     server.origins.length.should.equal(2);
76     server.origins.indexOf('google.com:80').should.equal(-1);
77   }
78
79 , 'Buffer': function(){
80     var server = fspfs.createServer();
81     
82     Buffer.isBuffer(server.buffer).should.be.true;
83     server.buffer.toString().indexOf('to-ports="*"').should.be.above(0);
84     server.buffer.toString().indexOf('domain="*"').should.be.above(0);
85     server.buffer.toString().indexOf('domain="google.com"').should.equal(-1);
86     
87     // The buffers should be rebuild when new origins are added
88     server.add('google.com:80');
89     server.buffer.toString().indexOf('to-ports="80"').should.be.above(0);
90     server.buffer.toString().indexOf('domain="google.com"').should.be.above(0);
91     
92     server.remove('google.com:80');
93     server.buffer.toString().indexOf('to-ports="80"').should.equal(-1);
94     server.buffer.toString().indexOf('domain="google.com"').should.equal(-1);
95   }
96
97 , 'Responder': function(){
98     var server = fspfs.createServer()
99       , calls = 0
100       // dummy socket to emulate a `real` socket
101       , dummySocket = {
102           readyState: 'open'
103         , end: function(buffer){
104           calls++;
105           Buffer.isBuffer(buffer).should.be.true;
106           buffer.toString().should.equal(server.buffer.toString());
107         }
108       };
109     
110     server.responder(dummySocket);
111     calls.should.equal(1);
112   }
113
114 , 'Event proxy': function(){
115     var server = fspfs.createServer()
116       , calls = 0;
117     
118     Object.keys(process.EventEmitter.prototype).forEach(function proxy(key){
119       assert.ok(!!server[key] && typeof server[key] === 'function');
120     });
121     
122     // test if it works by calling a none default event
123     server.on('pew', function(){
124       calls++;
125     });
126     
127     server.emit('pew');
128     calls.should.equal(1);
129   }
130
131 , 'inline response http': function(){
132     var port = 1335
133       , httpserver = http.createServer(function(q,r){r.writeHead(200);r.end(':3')})
134       , server = fspfs.createServer();
135     
136     httpserver.listen(port, function(){
137       server.listen(port + 1, httpserver, function(){
138         var client = net.createConnection(port);
139         client.write('<policy-file-request/>\0');
140         client.on('error', function(err){
141           assert.ok(!err, err)
142         });
143         client.on('data', function(data){
144         
145           var response = data.toString();
146           console.log(response);
147           
148           response.indexOf('to-ports="*"').should.be.above(0);
149           response.indexOf('domain="*"').should.be.above(0);
150           response.indexOf('domain="google.com"').should.equal(-1);
151           
152           // clean up
153           client.destroy();
154           server.close();
155           httpserver.close();
156         });
157       });
158     });
159   }
160
161 , 'server response': function(){
162     var port = 1340
163       , server = fspfs.createServer();
164       
165     server.listen(port, function(){
166       var client = net.createConnection(port);
167       client.write('<policy-file-request/>\0');
168       client.on('error', function(err){
169         assert.ok(!err, err)
170       });
171       client.on('data', function(data){
172       
173         var response = data.toString();
174         
175         response.indexOf('to-ports="*"').should.be.above(0);
176         response.indexOf('domain="*"').should.be.above(0);
177         response.indexOf('domain="google.com"').should.equal(-1);
178         
179         // clean up
180         client.destroy();
181         server.close();
182       });
183     });
184   }
185
186 , 'inline response https': function(){
187     var port = 1345
188       , ssl = {
189           key: fs.readFileSync(__dirname + '/ssl/ssl.private.key').toString()
190         , cert: fs.readFileSync(__dirname + '/ssl/ssl.crt').toString()
191         }
192       , httpserver = https.createServer(ssl, function(q,r){r.writeHead(200);r.end(':3')})
193       , server = fspfs.createServer();
194     
195     httpserver.listen(port, function(){
196       server.listen(port + 1, httpserver, function(){
197         var client = net.createConnection(port);
198         client.write('<policy-file-request/>\0');
199         client.on('error', function(err){
200           assert.ok(!err, err)
201         });
202         client.on('data', function(data){
203         
204           var response = data.toString();
205           
206           response.indexOf('to-ports="*"').should.be.above(0);
207           response.indexOf('domain="*"').should.be.above(0);
208           response.indexOf('domain="google.com"').should.equal(-1);
209           
210           // clean up
211           client.destroy();
212           server.close();
213           httpserver.close();
214         });
215       });
216     });
217   }
218
219 , 'connect_failed': function(){
220     var server = fspfs.createServer();
221     
222     server.on('connect_failed', function(){
223       assert.ok(true);
224     });
225     
226     server.listen(function(){
227       assert.ok(false, 'Run this test without root access');
228       server.close();
229     });
230   }
231 };