UNPKG

7.92 kBJavaScriptView Raw
1/**
2 * Change into the test app dir
3 */
4process.chdir(__dirname + '/httpd-test-app');
5
6var assert = require('assert')
7 ,http = require('http')
8 ,Kernel = require('../kernel/kernel.js')
9 ,port = 13337
10 ,krnl = new Kernel({}, {}, {
11 webserver : [ 'httpd', port ]
12 }, {});
13
14krnl.once(krnl.ONLINE, function() {
15
16 function test1() {
17 var req1 = http.request({
18 hostname : 'localhost'
19 ,port : port
20 ,path : '/?p1=a&p2[]=b&p2[]=c&p3[key1]=d&p3[key2]=e'
21 ,method : 'GET'
22 }, function(res) {
23 var body = '';
24 res.on('data', function (chunk) {
25 body += chunk;
26 });
27 res.on('end', function() {
28 var obj = JSON.parse(body);
29 assert.ok(obj.response.p1 === 'a');
30 console.log(krnl.utility.ansi('green', '[ OK ]') + ' get simple param');
31 assert.ok(obj.response.p2[0] === 'b');
32 assert.ok(obj.response.p2[1] === 'c');
33 console.log(krnl.utility.ansi('green', '[ OK ]') + ' get array');
34 assert.ok(obj.response.p3['key1'] === 'd');
35 assert.ok(obj.response.p3['key2'] === 'e');
36 console.log(krnl.utility.ansi('green', '[ OK ]') + ' get object');
37 krnl.emit('done');
38 });
39 });
40 req1.end();
41 }; test1();
42
43 function test2() {
44 var post = 'p1=a&p2[]=b&p2[]=c&p3[key1]=d&p3[key2]=e', req2 = http.request({
45 hostname : 'localhost'
46 ,port : port
47 ,path : '/'
48 ,method : 'POST'
49 }, function(res) {
50 var body = '';
51 res.on('data', function (chunk) {
52 body += chunk;
53 });
54 res.on('end', function() {
55 var obj = JSON.parse(body);
56 assert.ok(obj.response.p1 === 'a');
57 console.log(krnl.utility.ansi('green', '[ OK ]') + ' post simple param');
58 assert.ok(obj.response.p2[0] === 'b');
59 assert.ok(obj.response.p2[1] === 'c');
60 console.log(krnl.utility.ansi('green', '[ OK ]') + ' post array');
61 assert.ok(obj.response.p3['key1'] === 'd');
62 assert.ok(obj.response.p3['key2'] === 'e');
63 console.log(krnl.utility.ansi('green', '[ OK ]') + ' post object');
64 krnl.emit('done');
65 });
66 });
67 req2.write(post);
68 req2.end();
69 }; test2();
70
71 function test3() {
72 var post = JSON.stringify({ testjson : 'fgh' }), req3 = http.request({
73 hostname : 'localhost'
74 ,port : port
75 ,path : '/'
76 ,method : 'POST'
77 }, function(res) {
78 var body = '';
79 res.on('data', function (chunk) {
80 body += chunk;
81 });
82 res.on('end', function() {
83 var obj = JSON.parse(body);
84 assert.ok(obj.response.testjson === 'fgh');
85 console.log(krnl.utility.ansi('green', '[ OK ]') + ' post json');
86 krnl.emit('done');
87 });
88 });
89 req3.write(post);
90 req3.end();
91 }; test3();
92
93 function test4() {
94 var req4 = http.request({
95 hostname : 'localhost'
96 ,port : port
97 ,path : '/testroute?p1=a'
98 ,method : 'GET'
99 }, function(res) {
100 var body = '';
101 res.on('data', function (chunk) {
102 body += chunk;
103 });
104 res.on('end', function() {
105 var obj = JSON.parse(body);
106 assert.ok(obj.response.p1 === 'a');
107 console.log(krnl.utility.ansi('green', '[ OK ]') + ' routing');
108 krnl.emit('done');
109 });
110 });
111 req4.end();
112 }; test4();
113
114 function test5() {
115 var post =
116
117 '------WebKitFormBoundaryhAvwXDBfpBirC3Yr\r\n' +
118 'Content-Disposition: form-data; name="testfilesingle"; filename="test.txt"\r\n' +
119 'Content-Type: text/plain\r\n\r\n' +
120
121 'abc\r\n' +
122
123 '------WebKitFormBoundaryhAvwXDBfpBirC3Yr--\r\n'
124
125 ,req5 = http.request({
126 hostname : 'localhost'
127 ,port : port
128 ,path : '/upload'
129 ,method : 'POST'
130 ,headers : { 'content-type' : 'multipart/form-data; boundary=----WebKitFormBoundaryhAvwXDBfpBirC3Yr'
131 , 'content-length' : post.length }
132 }, function(res) {
133 var body = '';
134 res.on('data', function (chunk) {
135 body += chunk;
136 });
137 res.on('end', function() {
138 var obj = JSON.parse(body);
139 assert.ok(obj.response === 'abc');
140 console.log(krnl.utility.ansi('green', '[ OK ]') + ' file upload - simple');
141 krnl.emit('done');
142 });
143 });
144 req5.write(post);
145 req5.end();
146 }; test5();
147
148 function test6() {
149
150 var post =
151
152 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
153 'Content-Disposition: form-data; name="testvar"\r\n\r\n' +
154
155 'abc\r\n' +
156 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
157 'Content-Disposition: form-data; name="testarr[]"\r\n\r\n' +
158
159 'abc\r\n' +
160 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
161 'Content-Disposition: form-data; name="testarr[]"\r\n\r\n' +
162
163 'abc\r\n' +
164 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
165 'Content-Disposition: form-data; name="testobj[key]"\r\n\r\n' +
166
167 'abc\r\n' +
168 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
169 'Content-Disposition: form-data; name="testfile"; filename="test.txt"\r\n' +
170 'Content-Type: text/plain\r\n\r\n' +
171
172 'abc\r\n' +
173
174 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
175 'Content-Disposition: form-data; name="testfiles[]"; filename="test.txt"\r\n' +
176 'Content-Type: text/plain\r\n\r\n' +
177
178 'abc\r\n' +
179
180 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
181 'Content-Disposition: form-data; name="testfiles[]"; filename="test.txt"\r\n' +
182 'Content-Type: text/plain\r\n\r\n' +
183
184 'abc\r\n' +
185
186 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ\r\n' +
187 'Content-Disposition: form-data; name="testfileobj[key]"; filename="test.txt"\r\n' +
188 'Content-Type: text/plain\r\n\r\n' +
189
190 'abc\r\n' +
191
192 '------WebKitFormBoundary9FmFYsDA0xhgeBsQ--'
193
194 ,req6 = http.request({
195 hostname : 'localhost'
196 ,port : port
197 ,path : '/upload'
198 ,method : 'POST'
199 ,headers : { 'content-type' : 'multipart/form-data; boundary=----WebKitFormBoundary9FmFYsDA0xhgeBsQ'
200 , 'content-length' : post.length }
201 }, function(res) {
202 var body = '';
203 res.on('data', function (chunk) {
204 body += chunk;
205 });
206 res.on('end', function() {
207 var obj = JSON.parse(body);
208 assert.ok(obj.response === 'abcabcabcabcabcabcabcabc');
209 console.log(krnl.utility.ansi('green', '[ OK ]') + ' file upload - multiple');
210 krnl.emit('done');
211 });
212 });
213 req6.write(post);
214 req6.end();
215 }; test6();
216
217});
218
219var nocompleted = 0; krnl.on('done', function() {
220 if (++nocompleted === 5) {
221 setTimeout(function() {
222 krnl.shutdown('bybye');
223 }, 100);
224 }
225});
\No newline at end of file