1 var assert
= require('assert')
2 var http
= require('http');
3 var path
= require('path');
4 var mime
= require('mime');
5 var request
= require('../main.js');
6 var fs
= require('fs');
8 var remoteFile
= 'http://nodejs.org/images/logo.png';
11 {name
: 'my_field', value
: 'my_value'},
12 {name
: 'my_buffer', value
: new Buffer([1, 2, 3])},
13 {name
: 'my_file', value
: fs
.createReadStream(__dirname
+ '/unicycle.jpg')},
14 {name
: 'remote_file', value
: request(remoteFile
) }
17 var server
= http
.createServer(function(req
, res
) {
21 req
.setEncoding('utf8');
23 req
.on('data', function(d
) {
27 req
.on('end', function() {
28 // check for the fields' traces
30 // 1st field : my_field
31 var field
= FIELDS
.shift();
32 assert
.ok( data
.indexOf('form-data; name="'+field
.name
+'"') != -1 );
33 assert
.ok( data
.indexOf(field
.value
) != -1 );
35 // 2nd field : my_buffer
36 var field
= FIELDS
.shift();
37 assert
.ok( data
.indexOf('form-data; name="'+field
.name
+'"') != -1 );
38 assert
.ok( data
.indexOf(field
.value
) != -1 );
40 // 3rd field : my_file
41 var field
= FIELDS
.shift();
42 assert
.ok( data
.indexOf('form-data; name="'+field
.name
+'"') != -1 );
43 assert
.ok( data
.indexOf('; filename="'+path
.basename(field
.value
.path
)+'"') != -1 );
44 // check for unicycle.jpg traces
45 assert
.ok( data
.indexOf('2005:06:21 01:44:12') != -1 );
46 assert
.ok( data
.indexOf('Content-Type: '+mime
.lookup(field
.value
.path
) ) != -1 );
48 // 4th field : remote_file
49 var field
= FIELDS
.shift();
50 assert
.ok( data
.indexOf('form-data; name="'+field
.name
+'"') != -1 );
51 assert
.ok( data
.indexOf('; filename="'+path
.basename(field
.value
.path
)+'"') != -1 );
52 // check for http://nodejs.org/images/logo.png traces
53 assert
.ok( data
.indexOf('ImageReady') != -1 );
54 assert
.ok( data
.indexOf('Content-Type: '+mime
.lookup(remoteFile
) ) != -1 );
64 server
.listen(8080, function() {
66 var req
= request
.post('http://localhost:8080/upload', function () {
71 FIELDS
.forEach(function(field
) {
72 form
.append(field
.name
, field
.value
);
77 process
.on('exit', function() {
78 assert
.strictEqual(FIELDS
.length
, 0);