summaryrefslogtreecommitdiffstats
path: root/fastify-busboy/test/decoder.test.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--fastify-busboy/test/decoder.test.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/fastify-busboy/test/decoder.test.js b/fastify-busboy/test/decoder.test.js
new file mode 100644
index 0000000..fa4ce69
--- /dev/null
+++ b/fastify-busboy/test/decoder.test.js
@@ -0,0 +1,98 @@
+'use strict'
+
+const { test } = require('tap')
+const Decoder = require('../lib/utils/Decoder')
+
+test('Decoder', t => {
+ const tests =
+ [
+ {
+ 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'
+ }
+ ]
+ t.plan(tests.length + 1)
+
+ tests.forEach((v) => {
+ t.test(v.what, t => {
+ t.plan(1)
+
+ const dec = new Decoder()
+ let result = ''
+ v.source.forEach(function (s) {
+ result += dec.write(s)
+ })
+ const msg = 'Decoded string mismatch.\n' +
+ 'Saw: ' + result + '\n' +
+ 'Expected: ' + v.expected
+ t.strictSame(result, v.expected, msg)
+ })
+ })
+
+ t.test('reset sets internal buffer to undefined', t => {
+ t.plan(2)
+
+ const dec = new Decoder()
+ dec.write('Hello+world%2')
+
+ t.notSame(dec.buffer, undefined)
+ dec.reset()
+ t.equal(dec.buffer, undefined)
+ })
+})