/* */ 
var assert = require('assert');
var common = require('../common');
var formidable = require('../../lib/index');
var http = require('http');
var server = http.createServer(function(req, res) {
  var form = new formidable.IncomingForm();
  form.uploadDir = common.dir.tmp;
  form.on('end', function() {
    throw new Error('Unexpected "end" event');
  });
  form.on('error', function(e) {
    res.writeHead(500);
    res.end(e.message);
  });
  form.parse(req);
});
server.listen(0, function() {
  var body = '--foo\r\n' + 'Content-Disposition: form-data; name="file1"; filename="file1"\r\n' + 'Content-Type: application/octet-stream\r\n' + '\r\nThis is the first file\r\n' + '--foo\r\n' + 'Content-Type: application/octet-stream\r\n' + 'Content-Disposition: form-data; name="file2"; filename="file2"\r\n' + 'Content-Transfer-Encoding: unknown\r\n' + '\r\nThis is the second file\r\n' + '--foo--\r\n';
  var req = http.request({
    method: 'POST',
    port: server.address().port,
    headers: {
      'Content-Length': body.length,
      'Content-Type': 'multipart/form-data; boundary=foo'
    }
  });
  req.on('response', function(res) {
    assert.equal(res.statusCode, 500);
    res.on('data', function() {});
    res.on('end', function() {
      server.close();
    });
  });
  req.end(body);
});
