| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | try {  require('form-data')} catch (e) {  console.error('form-data must be installed to run this test.')  console.error('skipping this test. please install form-data and run again if you need to test this feature.')  process.exit(0)}var assert = require('assert')var http = require('http');var path = require('path');var mime = require('mime-types');var request = require('../index');var fs = require('fs');var remoteFile = 'http://nodejs.org/images/logo.png';var totalLength = null;var FIELDS = [  {name: 'my_field', value: 'my_value'},  {name: 'my_buffer', value: new Buffer([1, 2, 3])},  {name: 'my_file', value: fs.createReadStream(__dirname + '/unicycle.jpg')},  {name: 'remote_file', value: request(remoteFile) }];var server = http.createServer(function(req, res) {  // temp workaround  var data = '';  req.setEncoding('utf8');  req.on('data', function(d) {    data += d;  });  req.on('end', function() {    // check for the fields' traces    // 1st field : my_field    var field = FIELDS.shift();    assert.ok( data.indexOf('form-data; name="'+field.name+'"') != -1 );    assert.ok( data.indexOf(field.value) != -1 );    // 2nd field : my_buffer    var field = FIELDS.shift();    assert.ok( data.indexOf('form-data; name="'+field.name+'"') != -1 );    assert.ok( data.indexOf(field.value) != -1 );    // 3rd field : my_file    var field = FIELDS.shift();    assert.ok( data.indexOf('form-data; name="'+field.name+'"') != -1 );    assert.ok( data.indexOf('; filename="'+path.basename(field.value.path)+'"') != -1 );    // check for unicycle.jpg traces    assert.ok( data.indexOf('2005:06:21 01:44:12') != -1 );    assert.ok( data.indexOf('Content-Type: '+mime.lookup(field.value.path) ) != -1 );    // 4th field : remote_file    var field = FIELDS.shift();    assert.ok( data.indexOf('form-data; name="'+field.name+'"') != -1 );    assert.ok( data.indexOf('; filename="'+path.basename(field.value.path)+'"') != -1 );    // check for http://nodejs.org/images/logo.png traces    assert.ok( data.indexOf('ImageReady') != -1 );    assert.ok( data.indexOf('Content-Type: '+mime.lookup(remoteFile) ) != -1 );    assert.ok( req.headers['content-length'] == totalLength );    res.writeHead(200);    res.end('done');  });});server.listen(8080, function() {  var req = request.post('http://localhost:8080/upload', function () {    server.close();  })  var form = req.form()    FIELDS.forEach(function(field) {    form.append(field.name, field.value);  });  form.getLength(function (err, length) {    totalLength = length;  });});process.on('exit', function() {  assert.strictEqual(FIELDS.length, 0);});
 |