1 |
|
2 |
|
3 |
|
4 | process.chdir(__dirname + '/httpd-test-app');
|
5 |
|
6 | var 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 |
|
14 | krnl.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 |
|
219 | var 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 |