| 'use strict' |
| |
| const test = require('tape') |
| const fastURI = require('..') |
| |
| test('WebSocket queries preserve additional question marks', (t) => { |
| for (const scheme of ['ws', 'wss']) { |
| const uri = `${scheme}://example.com/chat?a?b` |
| const truncatedURI = `${scheme}://example.com/chat?a` |
| const parsed = fastURI.parse(uri) |
| |
| t.equal(parsed.resourceName, '/chat?a?b', `${scheme} parse preserves the resource name`) |
| t.equal(fastURI.serialize(parsed), uri, `${scheme} parsed components round-trip`) |
| t.equal( |
| fastURI.serialize({ scheme, host: 'example.com', resourceName: '/chat?a?b' }), |
| uri, |
| `${scheme} resource name serializes without truncation` |
| ) |
| t.equal(fastURI.normalize(uri), uri, `${scheme} normalization preserves the full query`) |
| t.equal(fastURI.equal(uri, truncatedURI), false, `${scheme} equality distinguishes the full query`) |
| } |
| |
| t.end() |
| }) |