done purchases remove, ocr scan, read image
This commit is contained in:
		
							
								
								
									
										343
									
								
								express-server/node_modules/busboy/test/test-types-multipart.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										343
									
								
								express-server/node_modules/busboy/test/test-types-multipart.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,343 @@
 | 
			
		||||
var Busboy = require('..');
 | 
			
		||||
 | 
			
		||||
var path = require('path'),
 | 
			
		||||
    inspect = require('util').inspect,
 | 
			
		||||
    assert = require('assert');
 | 
			
		||||
 | 
			
		||||
var EMPTY_FN = function() {};
 | 
			
		||||
 | 
			
		||||
var t = 0,
 | 
			
		||||
    group = path.basename(__filename, '.js') + '/';
 | 
			
		||||
var tests = [
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="file_name_0"',
 | 
			
		||||
       '',
 | 
			
		||||
       'super alpha file',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="file_name_1"',
 | 
			
		||||
       '',
 | 
			
		||||
       'super beta file',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_0"; filename="1k_a.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_1"; filename="1k_b.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['field', 'file_name_0', 'super alpha file', false, false, '7bit', 'text/plain'],
 | 
			
		||||
      ['field', 'file_name_1', 'super beta file', false, false, '7bit', 'text/plain'],
 | 
			
		||||
      ['file', 'upload_file_0', 1023, 0, '1k_a.dat', '7bit', 'application/octet-stream'],
 | 
			
		||||
      ['file', 'upload_file_1', 1023, 0, '1k_b.dat', '7bit', 'application/octet-stream']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'Fields and files'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
       'Content-Disposition: form-data; name="cont"',
 | 
			
		||||
       '',
 | 
			
		||||
       'some random content',
 | 
			
		||||
       '------WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
       'Content-Disposition: form-data; name="pass"',
 | 
			
		||||
       '',
 | 
			
		||||
       'some random pass',
 | 
			
		||||
       '------WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
       'Content-Disposition: form-data; name="bit"',
 | 
			
		||||
       '',
 | 
			
		||||
       '2',
 | 
			
		||||
       '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['field', 'cont', 'some random content', false, false, '7bit', 'text/plain'],
 | 
			
		||||
      ['field', 'pass', 'some random pass', false, false, '7bit', 'text/plain'],
 | 
			
		||||
      ['field', 'bit', '2', false, false, '7bit', 'text/plain']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'Fields only'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ''
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
    expected: [],
 | 
			
		||||
    what: 'No fields and no files'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="file_name_0"',
 | 
			
		||||
       '',
 | 
			
		||||
       'super alpha file',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_0"; filename="1k_a.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
    limits: {
 | 
			
		||||
      fileSize: 13,
 | 
			
		||||
      fieldSize: 5
 | 
			
		||||
    },
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['field', 'file_name_0', 'super', false, true, '7bit', 'text/plain'],
 | 
			
		||||
      ['file', 'upload_file_0', 13, 2, '1k_a.dat', '7bit', 'application/octet-stream']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'Fields and files (limits)'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="file_name_0"',
 | 
			
		||||
       '',
 | 
			
		||||
       'super alpha file',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_0"; filename="1k_a.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
    limits: {
 | 
			
		||||
      files: 0
 | 
			
		||||
    },
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['field', 'file_name_0', 'super alpha file', false, false, '7bit', 'text/plain']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'Fields and files (limits: 0 files)'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="file_name_0"',
 | 
			
		||||
       '',
 | 
			
		||||
       'super alpha file',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="file_name_1"',
 | 
			
		||||
       '',
 | 
			
		||||
       'super beta file',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_0"; filename="1k_a.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_1"; filename="1k_b.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['field', 'file_name_0', 'super alpha file', false, false, '7bit', 'text/plain'],
 | 
			
		||||
      ['field', 'file_name_1', 'super beta file', false, false, '7bit', 'text/plain'],
 | 
			
		||||
    ],
 | 
			
		||||
    events: ['field'],
 | 
			
		||||
    what: 'Fields and (ignored) files'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_0"; filename="/tmp/1k_a.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_1"; filename="C:\\files\\1k_b.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_2"; filename="relative/1k_c.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['file', 'upload_file_0', 26, 0, '1k_a.dat', '7bit', 'application/octet-stream'],
 | 
			
		||||
      ['file', 'upload_file_1', 26, 0, '1k_b.dat', '7bit', 'application/octet-stream'],
 | 
			
		||||
      ['file', 'upload_file_2', 26, 0, '1k_c.dat', '7bit', 'application/octet-stream']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'Files with filenames containing paths'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_0"; filename="/absolute/1k_a.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_1"; filename="C:\\absolute\\1k_b.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
       'Content-Disposition: form-data; name="upload_file_2"; filename="relative/1k_c.dat"',
 | 
			
		||||
       'Content-Type: application/octet-stream',
 | 
			
		||||
       '',
 | 
			
		||||
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 | 
			
		||||
       '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k',
 | 
			
		||||
    preservePath: true,
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['file', 'upload_file_0', 26, 0, '/absolute/1k_a.dat', '7bit', 'application/octet-stream'],
 | 
			
		||||
      ['file', 'upload_file_1', 26, 0, 'C:\\absolute\\1k_b.dat', '7bit', 'application/octet-stream'],
 | 
			
		||||
      ['file', 'upload_file_2', 26, 0, 'relative/1k_c.dat', '7bit', 'application/octet-stream']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'Paths to be preserved through the preservePath option'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
       'Content-Disposition: form-data; name="cont"',
 | 
			
		||||
       'Content-Type: ',
 | 
			
		||||
       '',
 | 
			
		||||
       'some random content',
 | 
			
		||||
       '------WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
       'Content-Disposition: ',
 | 
			
		||||
       '',
 | 
			
		||||
       'some random pass',
 | 
			
		||||
       '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--'
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['field', 'cont', 'some random content', false, false, '7bit', 'text/plain']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'Empty content-type and empty content-disposition'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['--asdasdasdasd\r\n',
 | 
			
		||||
       'Content-Type: text/plain\r\n',
 | 
			
		||||
       'Content-Disposition: form-data; name="foo"\r\n',
 | 
			
		||||
       '\r\n',
 | 
			
		||||
       'asd\r\n',
 | 
			
		||||
       '--asdasdasdasd--'
 | 
			
		||||
      ].join(':)')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: 'asdasdasdasd',
 | 
			
		||||
    expected: [],
 | 
			
		||||
    shouldError: 'Unexpected end of multipart data',
 | 
			
		||||
    what: 'Stopped mid-header'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
       'Content-Disposition: form-data; name="cont"',
 | 
			
		||||
       'Content-Type: application/json',
 | 
			
		||||
       '',
 | 
			
		||||
       '{}',
 | 
			
		||||
       '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--',
 | 
			
		||||
      ].join('\r\n')
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
    expected: [
 | 
			
		||||
      ['field', 'cont', '{}', false, false, '7bit', 'application/json']
 | 
			
		||||
    ],
 | 
			
		||||
    what: 'content-type for fields'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [
 | 
			
		||||
      '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--\r\n'
 | 
			
		||||
    ],
 | 
			
		||||
    boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY',
 | 
			
		||||
    expected: [],
 | 
			
		||||
    what: 'empty form'
 | 
			
		||||
  }
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
function next() {
 | 
			
		||||
  if (t === tests.length)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  var v = tests[t];
 | 
			
		||||
 | 
			
		||||
  var busboy = new Busboy({
 | 
			
		||||
        limits: v.limits,
 | 
			
		||||
        preservePath: v.preservePath,
 | 
			
		||||
        headers: {
 | 
			
		||||
          'content-type': 'multipart/form-data; boundary=' + v.boundary
 | 
			
		||||
        }
 | 
			
		||||
      }),
 | 
			
		||||
      finishes = 0,
 | 
			
		||||
      results = [];
 | 
			
		||||
 | 
			
		||||
  if (v.events === undefined || v.events.indexOf('field') > -1) {
 | 
			
		||||
    busboy.on('field', function(key, val, keyTrunc, valTrunc, encoding, contype) {
 | 
			
		||||
      results.push(['field', key, val, keyTrunc, valTrunc, encoding, contype]);
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
  if (v.events === undefined || v.events.indexOf('file') > -1) {
 | 
			
		||||
    busboy.on('file', function(fieldname, stream, filename, encoding, mimeType) {
 | 
			
		||||
      var nb = 0,
 | 
			
		||||
          info = ['file',
 | 
			
		||||
                  fieldname,
 | 
			
		||||
                  nb,
 | 
			
		||||
                  0,
 | 
			
		||||
                  filename,
 | 
			
		||||
                  encoding,
 | 
			
		||||
                  mimeType];
 | 
			
		||||
      results.push(info);
 | 
			
		||||
      stream.on('data', function(d) {
 | 
			
		||||
        nb += d.length;
 | 
			
		||||
      }).on('limit', function() {
 | 
			
		||||
        ++info[3];
 | 
			
		||||
      }).on('end', function() {
 | 
			
		||||
        info[2] = nb;
 | 
			
		||||
        if (stream.truncated)
 | 
			
		||||
          ++info[3];
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
  busboy.on('finish', function() {
 | 
			
		||||
    assert(finishes++ === 0, makeMsg(v.what, 'finish emitted multiple times'));
 | 
			
		||||
    assert.deepEqual(results.length,
 | 
			
		||||
                     v.expected.length,
 | 
			
		||||
                     makeMsg(v.what, 'Parsed result count mismatch. Saw '
 | 
			
		||||
                                     + results.length
 | 
			
		||||
                                     + '. Expected: ' + v.expected.length));
 | 
			
		||||
 | 
			
		||||
    results.forEach(function(result, i) {
 | 
			
		||||
      assert.deepEqual(result,
 | 
			
		||||
                       v.expected[i],
 | 
			
		||||
                       makeMsg(v.what,
 | 
			
		||||
                               'Result mismatch:\nParsed: ' + inspect(result)
 | 
			
		||||
                               + '\nExpected: ' + inspect(v.expected[i]))
 | 
			
		||||
                      );
 | 
			
		||||
    });
 | 
			
		||||
    ++t;
 | 
			
		||||
    next();
 | 
			
		||||
  }).on('error', function(err) {
 | 
			
		||||
    if (!v.shouldError || v.shouldError !== err.message)
 | 
			
		||||
      assert(false, makeMsg(v.what, 'Unexpected error: ' + err));
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  v.source.forEach(function(s) {
 | 
			
		||||
    busboy.write(new Buffer(s, 'utf8'), EMPTY_FN);
 | 
			
		||||
  });
 | 
			
		||||
  busboy.end();
 | 
			
		||||
}
 | 
			
		||||
next();
 | 
			
		||||
 | 
			
		||||
function makeMsg(what, msg) {
 | 
			
		||||
  return '[' + group + what + ']: ' + msg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
process.on('exit', function() {
 | 
			
		||||
  assert(t === tests.length,
 | 
			
		||||
         makeMsg('_exit',
 | 
			
		||||
                 'Only finished ' + t + '/' + tests.length + ' tests'));
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										183
									
								
								express-server/node_modules/busboy/test/test-types-urlencoded.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								express-server/node_modules/busboy/test/test-types-urlencoded.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,183 @@
 | 
			
		||||
var Busboy = require('..');
 | 
			
		||||
 | 
			
		||||
var path = require('path'),
 | 
			
		||||
    inspect = require('util').inspect,
 | 
			
		||||
    assert = require('assert');
 | 
			
		||||
 | 
			
		||||
var EMPTY_FN = function() {};
 | 
			
		||||
 | 
			
		||||
var t = 0,
 | 
			
		||||
    group = path.basename(__filename, '.js') + '/';
 | 
			
		||||
 | 
			
		||||
var tests = [
 | 
			
		||||
  { source: ['foo'],
 | 
			
		||||
    expected: [['foo', '', false, false]],
 | 
			
		||||
    what: 'Unassigned value'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar'],
 | 
			
		||||
    expected: [['foo', 'bar', false, false]],
 | 
			
		||||
    what: 'Assigned value'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo&bar=baz'],
 | 
			
		||||
    expected: [['foo', '', false, false],
 | 
			
		||||
               ['bar', 'baz', false, false]],
 | 
			
		||||
    what: 'Unassigned and assigned value'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz'],
 | 
			
		||||
    expected: [['foo', 'bar', false, false],
 | 
			
		||||
               ['baz', '', false, false]],
 | 
			
		||||
    what: 'Assigned and unassigned value'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['foo', 'bar', false, false],
 | 
			
		||||
               ['baz', 'bla', false, false]],
 | 
			
		||||
    what: 'Two assigned values'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo&bar'],
 | 
			
		||||
    expected: [['foo', '', false, false],
 | 
			
		||||
               ['bar', '', false, false]],
 | 
			
		||||
    what: 'Two unassigned values'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo&bar&'],
 | 
			
		||||
    expected: [['foo', '', false, false],
 | 
			
		||||
               ['bar', '', false, false]],
 | 
			
		||||
    what: 'Two unassigned values and ampersand'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar+baz%2Bquux'],
 | 
			
		||||
    expected: [['foo', 'bar baz+quux', false, false]],
 | 
			
		||||
    what: 'Assigned value with (plus) space'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar%20baz%21'],
 | 
			
		||||
    expected: [['foo', 'bar baz!', false, false]],
 | 
			
		||||
    what: 'Assigned value with encoded bytes'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo%20bar=baz%20bla%21'],
 | 
			
		||||
    expected: [['foo bar', 'baz bla!', false, false]],
 | 
			
		||||
    what: 'Assigned value with encoded bytes #2'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar%20baz%21&num=1000'],
 | 
			
		||||
    expected: [['foo', 'bar baz!', false, false],
 | 
			
		||||
               ['num', '1000', false, false]],
 | 
			
		||||
    what: 'Two assigned values, one with encoded bytes'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [],
 | 
			
		||||
    what: 'Limits: zero fields',
 | 
			
		||||
    limits: { fields: 0 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['foo', 'bar', false, false]],
 | 
			
		||||
    what: 'Limits: one field',
 | 
			
		||||
    limits: { fields: 1 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['foo', 'bar', false, false],
 | 
			
		||||
               ['baz', 'bla', false, false]],
 | 
			
		||||
    what: 'Limits: field part lengths match limits',
 | 
			
		||||
    limits: { fieldNameSize: 3, fieldSize: 3 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['fo', 'bar', true, false],
 | 
			
		||||
               ['ba', 'bla', true, false]],
 | 
			
		||||
    what: 'Limits: truncated field name',
 | 
			
		||||
    limits: { fieldNameSize: 2 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['foo', 'ba', false, true],
 | 
			
		||||
               ['baz', 'bl', false, true]],
 | 
			
		||||
    what: 'Limits: truncated field value',
 | 
			
		||||
    limits: { fieldSize: 2 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['fo', 'ba', true, true],
 | 
			
		||||
               ['ba', 'bl', true, true]],
 | 
			
		||||
    what: 'Limits: truncated field name and value',
 | 
			
		||||
    limits: { fieldNameSize: 2, fieldSize: 2 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['fo', '', true, true],
 | 
			
		||||
               ['ba', '', true, true]],
 | 
			
		||||
    what: 'Limits: truncated field name and zero value limit',
 | 
			
		||||
    limits: { fieldNameSize: 2, fieldSize: 0 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['foo=bar&baz=bla'],
 | 
			
		||||
    expected: [['', '', true, true],
 | 
			
		||||
               ['', '', true, true]],
 | 
			
		||||
    what: 'Limits: truncated zero field name and zero value limit',
 | 
			
		||||
    limits: { fieldNameSize: 0, fieldSize: 0 }
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['&'],
 | 
			
		||||
    expected: [],
 | 
			
		||||
    what: 'Ampersand'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['&&&&&'],
 | 
			
		||||
    expected: [],
 | 
			
		||||
    what: 'Many ampersands'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['='],
 | 
			
		||||
    expected: [['', '', false, false]],
 | 
			
		||||
    what: 'Assigned value, empty name and value'
 | 
			
		||||
  },
 | 
			
		||||
  { source: [''],
 | 
			
		||||
    expected: [],
 | 
			
		||||
    what: 'Nothing'
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
function next() {
 | 
			
		||||
  if (t === tests.length)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  var v = tests[t];
 | 
			
		||||
 | 
			
		||||
  var busboy = new Busboy({
 | 
			
		||||
        limits: v.limits,
 | 
			
		||||
        headers: {
 | 
			
		||||
          'content-type': 'application/x-www-form-urlencoded; charset=utf-8'
 | 
			
		||||
        }
 | 
			
		||||
      }),
 | 
			
		||||
      finishes = 0,
 | 
			
		||||
      results = [];
 | 
			
		||||
 | 
			
		||||
  busboy.on('field', function(key, val, keyTrunc, valTrunc) {
 | 
			
		||||
    results.push([key, val, keyTrunc, valTrunc]);
 | 
			
		||||
  });
 | 
			
		||||
  busboy.on('file', function() {
 | 
			
		||||
    throw new Error(makeMsg(v.what, 'Unexpected file'));
 | 
			
		||||
  });
 | 
			
		||||
  busboy.on('finish', function() {
 | 
			
		||||
    assert(finishes++ === 0, makeMsg(v.what, 'finish emitted multiple times'));
 | 
			
		||||
    assert.deepEqual(results.length,
 | 
			
		||||
                     v.expected.length,
 | 
			
		||||
                     makeMsg(v.what, 'Parsed result count mismatch. Saw '
 | 
			
		||||
                                     + results.length
 | 
			
		||||
                                     + '. Expected: ' + v.expected.length));
 | 
			
		||||
 | 
			
		||||
    var i = 0;
 | 
			
		||||
    results.forEach(function(result) {
 | 
			
		||||
      assert.deepEqual(result,
 | 
			
		||||
                       v.expected[i],
 | 
			
		||||
                       makeMsg(v.what,
 | 
			
		||||
                               'Result mismatch:\nParsed: ' + inspect(result)
 | 
			
		||||
                               + '\nExpected: ' + inspect(v.expected[i]))
 | 
			
		||||
                      );
 | 
			
		||||
      ++i;
 | 
			
		||||
    });
 | 
			
		||||
    ++t;
 | 
			
		||||
    next();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  v.source.forEach(function(s) {
 | 
			
		||||
    busboy.write(new Buffer(s, 'utf8'), EMPTY_FN);
 | 
			
		||||
  });
 | 
			
		||||
  busboy.end();
 | 
			
		||||
}
 | 
			
		||||
next();
 | 
			
		||||
 | 
			
		||||
function makeMsg(what, msg) {
 | 
			
		||||
  return '[' + group + what + ']: ' + msg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
process.on('exit', function() {
 | 
			
		||||
  assert(t === tests.length, makeMsg('_exit', 'Only finished ' + t + '/' + tests.length + ' tests'));
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										66
									
								
								express-server/node_modules/busboy/test/test-utils-decoder.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								express-server/node_modules/busboy/test/test-utils-decoder.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
var Decoder = require('../lib/utils').Decoder;
 | 
			
		||||
 | 
			
		||||
var path = require('path'),
 | 
			
		||||
    assert = require('assert');
 | 
			
		||||
 | 
			
		||||
var group = path.basename(__filename, '.js') + '/';
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
  { source: ['Hello world'],
 | 
			
		||||
    expected: 'Hello world',
 | 
			
		||||
    what: 'No encoded bytes'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello%20world'],
 | 
			
		||||
    expected: 'Hello world',
 | 
			
		||||
    what: 'One full encoded byte'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello%20world%21'],
 | 
			
		||||
    expected: 'Hello world!',
 | 
			
		||||
    what: 'Two full encoded bytes'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello%', '20world'],
 | 
			
		||||
    expected: 'Hello world',
 | 
			
		||||
    what: 'One full encoded byte split #1'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello%2', '0world'],
 | 
			
		||||
    expected: 'Hello world',
 | 
			
		||||
    what: 'One full encoded byte split #2'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello%20', 'world'],
 | 
			
		||||
    expected: 'Hello world',
 | 
			
		||||
    what: 'One full encoded byte (concat)'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello%2Qworld'],
 | 
			
		||||
    expected: 'Hello%2Qworld',
 | 
			
		||||
    what: 'Malformed encoded byte #1'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello%world'],
 | 
			
		||||
    expected: 'Hello%world',
 | 
			
		||||
    what: 'Malformed encoded byte #2'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello+world'],
 | 
			
		||||
    expected: 'Hello world',
 | 
			
		||||
    what: 'Plus to space'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['Hello+world%21'],
 | 
			
		||||
    expected: 'Hello world!',
 | 
			
		||||
    what: 'Plus and encoded byte'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['5%2B5%3D10'],
 | 
			
		||||
    expected: '5+5=10',
 | 
			
		||||
    what: 'Encoded plus'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ['5+%2B+5+%3D+10'],
 | 
			
		||||
    expected: '5 + 5 = 10',
 | 
			
		||||
    what: 'Spaces and encoded plus'
 | 
			
		||||
  },
 | 
			
		||||
].forEach(function(v) {
 | 
			
		||||
  var dec = new Decoder(), result = '';
 | 
			
		||||
  v.source.forEach(function(s) {
 | 
			
		||||
    result += dec.write(s);
 | 
			
		||||
  });
 | 
			
		||||
  var msg = '[' + group + v.what + ']: decoded string mismatch.\n'
 | 
			
		||||
            + 'Saw: ' + result + '\n'
 | 
			
		||||
            + 'Expected: ' + v.expected;
 | 
			
		||||
  assert.deepEqual(result, v.expected, msg);
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										96
									
								
								express-server/node_modules/busboy/test/test-utils-parse-params.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								express-server/node_modules/busboy/test/test-utils-parse-params.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
			
		||||
var parseParams = require('../lib/utils').parseParams;
 | 
			
		||||
 | 
			
		||||
var path = require('path'),
 | 
			
		||||
    assert = require('assert'),
 | 
			
		||||
    inspect = require('util').inspect;
 | 
			
		||||
 | 
			
		||||
var group = path.basename(__filename, '.js') + '/';
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
  { source: 'video/ogg',
 | 
			
		||||
    expected: ['video/ogg'],
 | 
			
		||||
    what: 'No parameters'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'video/ogg;',
 | 
			
		||||
    expected: ['video/ogg'],
 | 
			
		||||
    what: 'No parameters (with separator)'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'video/ogg; ',
 | 
			
		||||
    expected: ['video/ogg'],
 | 
			
		||||
    what: 'No parameters (with separator followed by whitespace)'
 | 
			
		||||
  },
 | 
			
		||||
  { source: ';video/ogg',
 | 
			
		||||
    expected: ['', 'video/ogg'],
 | 
			
		||||
    what: 'Empty parameter'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'video/*',
 | 
			
		||||
    expected: ['video/*'],
 | 
			
		||||
    what: 'Subtype with asterisk'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; encoding=utf8',
 | 
			
		||||
    expected: ['text/plain', ['encoding', 'utf8']],
 | 
			
		||||
    what: 'Unquoted'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; encoding=',
 | 
			
		||||
    expected: ['text/plain', ['encoding', '']],
 | 
			
		||||
    what: 'Unquoted empty string'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; encoding="utf8"',
 | 
			
		||||
    expected: ['text/plain', ['encoding', 'utf8']],
 | 
			
		||||
    what: 'Quoted'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; greeting="hello \\"world\\""',
 | 
			
		||||
    expected: ['text/plain', ['greeting', 'hello "world"']],
 | 
			
		||||
    what: 'Quotes within quoted'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; encoding=""',
 | 
			
		||||
    expected: ['text/plain', ['encoding', '']],
 | 
			
		||||
    what: 'Quoted empty string'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; encoding="utf8";\t   foo=bar;test',
 | 
			
		||||
    expected: ['text/plain', ['encoding', 'utf8'], ['foo', 'bar'], 'test'],
 | 
			
		||||
    what: 'Multiple params with various spacing'
 | 
			
		||||
  },
 | 
			
		||||
  { source: "text/plain; filename*=iso-8859-1'en'%A3%20rates",
 | 
			
		||||
    expected: ['text/plain', ['filename', '£ rates']],
 | 
			
		||||
    what: 'Extended parameter (RFC 5987) with language'
 | 
			
		||||
  },
 | 
			
		||||
  { source: "text/plain; filename*=utf-8''%c2%a3%20and%20%e2%82%ac%20rates",
 | 
			
		||||
    expected: ['text/plain', ['filename', '£ and € rates']],
 | 
			
		||||
    what: 'Extended parameter (RFC 5987) without language'
 | 
			
		||||
  },
 | 
			
		||||
  { source: "text/plain; filename*=utf-8''%E6%B5%8B%E8%AF%95%E6%96%87%E6%A1%A3",
 | 
			
		||||
    expected: ['text/plain', ['filename', '测试文档']],
 | 
			
		||||
    what: 'Extended parameter (RFC 5987) without language #2'
 | 
			
		||||
  },
 | 
			
		||||
  { source: "text/plain; filename*=iso-8859-1'en'%A3%20rates; altfilename*=utf-8''%c2%a3%20and%20%e2%82%ac%20rates",
 | 
			
		||||
    expected: ['text/plain', ['filename', '£ rates'], ['altfilename', '£ and € rates']],
 | 
			
		||||
    what: 'Multiple extended parameters (RFC 5987) with mixed charsets'
 | 
			
		||||
  },
 | 
			
		||||
  { source: "text/plain; filename*=iso-8859-1'en'%A3%20rates; altfilename=\"foobarbaz\"",
 | 
			
		||||
    expected: ['text/plain', ['filename', '£ rates'], ['altfilename', 'foobarbaz']],
 | 
			
		||||
    what: 'Mixed regular and extended parameters (RFC 5987)'
 | 
			
		||||
  },
 | 
			
		||||
  { source: "text/plain; filename=\"foobarbaz\"; altfilename*=iso-8859-1'en'%A3%20rates",
 | 
			
		||||
    expected: ['text/plain', ['filename', 'foobarbaz'], ['altfilename', '£ rates']],
 | 
			
		||||
    what: 'Mixed regular and extended parameters (RFC 5987) #2'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; filename="C:\\folder\\test.png"',
 | 
			
		||||
    expected: ['text/plain', ['filename', 'C:\\folder\\test.png']],
 | 
			
		||||
    what: 'Unescaped backslashes should be considered backslashes'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'text/plain; filename="John \\"Magic\\" Smith.png"',
 | 
			
		||||
    expected: ['text/plain', ['filename', 'John "Magic" Smith.png']],
 | 
			
		||||
    what: 'Escaped double-quotes should be considered double-quotes'
 | 
			
		||||
  },
 | 
			
		||||
  { source: 'multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY',
 | 
			
		||||
    expected: ['multipart/form-data', ['charset', 'utf-8'], ['boundary', '0xKhTmLbOuNdArY']],
 | 
			
		||||
    what: 'Multiple non-quoted parameters'
 | 
			
		||||
  },
 | 
			
		||||
].forEach(function(v) {
 | 
			
		||||
  var result = parseParams(v.source),
 | 
			
		||||
      msg = '[' + group + v.what + ']: parsed parameters mismatch.\n'
 | 
			
		||||
            + 'Saw: ' + inspect(result) + '\n'
 | 
			
		||||
            + 'Expected: ' + inspect(v.expected);
 | 
			
		||||
  assert.deepEqual(result, v.expected, msg);
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										4
									
								
								express-server/node_modules/busboy/test/test.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								express-server/node_modules/busboy/test/test.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
require('fs').readdirSync(__dirname).forEach(function(f) {
 | 
			
		||||
  if (f.substr(0, 5) === 'test-')
 | 
			
		||||
    require('./' + f);
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user