arnaucube
arnaucube/comunicationLeapPublic Self-hosted repository
comunicationLeap/node_modules/formidable/test/unit/test-incoming-form.js
node_modules/formidable/test/unit/test-incoming-form.jsRaw
 1var common       = require('../common');
 2var test         = require('utest');
 3var assert       = common.assert;
 4var IncomingForm = common.require('incoming_form').IncomingForm;
 5var path         = require('path');
 6
 7var form;
 8test('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
61function makeHeader(filename) {
62  return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"';
63}