diff --git a/test/basename.test.js b/test/basename.test.js new file mode 100644 index 0000000..0fb4a69 --- /dev/null +++ b/test/basename.test.js @@ -0,0 +1,28 @@ +'use strict' + +const { test } = require('tap') +const basename = require('../lib/utils/basename') + +test('basename', (t) => { + const testCases = [ + { description: 'returns an empty string if the path is not a string', path: {}, expected: '' }, + { description: 'returns an empty string if the path includes a \' and the char after is a .', path: 'path\\.', expected: '' }, + { description: 'returns an empty string if the path includes a / and the char after is a .', path: 'path/.', expected: '' }, + { description: 'returns an empty string if the path includes a \' and the chars after are a ..', path: 'path\\..', expected: '' }, + { description: 'returns an empty string if the path includes a / and the chars after are a ..', path: 'path/..', expected: '' }, + { description: 'returns the path if the path includes a \' and the rest is anything other than dots', path: 'path\\subpath', expected: 'subpath' }, + { description: 'returns the path if the path includes a / and the rest is anything other than dots', path: 'path/subpath', expected: 'subpath' }, + { description: 'returns an empty string if the path is a .', path: '.', expected: '' }, + { description: 'returns an empty string if the path is a ..', path: '..', expected: '' }, + { description: 'returns the path if the path is anything other than dots', path: 'subpath', expected: 'subpath' } + ] + + t.plan(testCases.length) + + testCases.forEach((testCase, index) => { + t.test(testCase.description, t => { + t.plan(1) + t.equal(basename(testCase.path), testCase.expected, `Test case ${index + 1}`) + }) + }) +}) diff --git a/test/busboy-emit.test.js b/test/busboy-emit.test.js new file mode 100644 index 0000000..1e539ab --- /dev/null +++ b/test/busboy-emit.test.js @@ -0,0 +1,17 @@ +'use strict' + +const Busboy = require('../lib/main') +const { test } = require('tap') + +test('busboy, emit', t => { + t.plan(1) + + t.test('returns undefined when the event is called a second time and the busboy was already finished', t => { + const busboy = new Busboy({ headers: { 'content-type': 'application/x-www-form-urlencoded' } }) + busboy._finished = true + busboy.emit('finish') + + t.equal(busboy.emit('finish'), undefined) + t.end() + }) +}) diff --git a/test/dicer-write.test.js b/test/dicer-write.test.js new file mode 100644 index 0000000..f270fa3 --- /dev/null +++ b/test/dicer-write.test.js @@ -0,0 +1,19 @@ +'use strict' + +const { test } = require('tap') +const { Dicer } = require('../lib/main') + +test('dicer _write method', t => { + t.plan(1) + + t.test('calls the callback cb() when headerFirst is set and all the data have been written', t => { + t.plan(1) + const dicer = new Dicer({ headerFirst: true }) + + dicer._write(Buffer.from('Content-Type: text/plain'), null, () => { + dicer._write(Buffer.from('Content-Type: text/plain'), null, () => { + t.pass('write method called') + }) + }) + }) +}) diff --git a/test/multipart-constructor.test.js b/test/multipart-constructor.test.js new file mode 100644 index 0000000..87aaad1 --- /dev/null +++ b/test/multipart-constructor.test.js @@ -0,0 +1,16 @@ +'use strict' + +const Multipart = require('../lib/types/multipart') +const Busboy = require('../lib/main') +const { test } = require('tap') + +test('multipart constructor', t => { + t.plan(1) + + t.test('throws if the boundary is not a string', t => { + const busboy = new Busboy({ headers: { 'content-type': 'application/x-www-form-urlencoded' } }) + + t.throws(() => new Multipart(busboy, { boundary: 123 }), new Error('Multipart: Boundary not found')) + t.end() + }) +})