Name: js-handler/node_modules/restify/node_modules/formidable/test/unit/test-incoming-form.js 
1:
var common       = require('../common');
2:
var test         = require('utest');
3:
var assert       = common.assert;
4:
var IncomingForm = common.require('incoming_form').IncomingForm;
5:
var path         = require('path');
6:
 
7:
var form;
8:
test('IncomingForm', {
9:
  before: function() {
10:
    form = new IncomingForm();
11:
  },
12:
 
13:
  '#_fileName with regular characters': function() {
14:
    var filename = 'foo.txt';
15:
    assert.equal(form._fileName(makeHeader(filename)), 'foo.txt');
16:
  },
17:
 
18:
  '#_fileName with unescaped quote': function() {
19:
    var filename = 'my".txt';
20:
    assert.equal(form._fileName(makeHeader(filename)), 'my".txt');
21:
  },
22:
 
23:
  '#_fileName with escaped quote': function() {
24:
    var filename = 'my%22.txt';
25:
    assert.equal(form._fileName(makeHeader(filename)), 'my".txt');
26:
  },
27:
 
28:
  '#_fileName with bad quote and additional sub-header': function() {
29:
    var filename = 'my".txt';
30:
    var header = makeHeader(filename) + '; foo="bar"';
31:
    assert.equal(form._fileName(header), filename);
32:
  },
33:
 
34:
  '#_fileName with semicolon': function() {
35:
    var filename = 'my;.txt';
36:
    assert.equal(form._fileName(makeHeader(filename)), 'my;.txt');
37:
  },
38:
 
39:
  '#_fileName with utf8 character': function() {
40:
    var filename = 'my☃.txt';
41:
    assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt');
42:
  },
43:
 
44:
  '#_uploadPath strips harmful characters from extension when keepExtensions': function() {
45:
    form.keepExtensions = true;
46:
 
47:
    var ext = path.extname(form._uploadPath('fine.jpg?foo=bar'));
48:
    assert.equal(ext, '.jpg');
49:
 
50:
    var ext = path.extname(form._uploadPath('fine?foo=bar'));
51:
    assert.equal(ext, '');
52:
 
53:
    var ext = path.extname(form._uploadPath('super.cr2+dsad'));
54:
    assert.equal(ext, '.cr2');
55:
 
56:
    var ext = path.extname(form._uploadPath('super.bar'));
57:
    assert.equal(ext, '.bar');
58:
  },
59:
});
60:
 
61:
function makeHeader(filename) {
62:
  return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"';
63:
}