websocket-query-preservation.test.js 903 B

123456789101112131415161718192021222324
  1. 'use strict'
  2. const test = require('tape')
  3. const fastURI = require('..')
  4. test('WebSocket queries preserve additional question marks', (t) => {
  5. for (const scheme of ['ws', 'wss']) {
  6. const uri = `${scheme}://example.com/chat?a?b`
  7. const truncatedURI = `${scheme}://example.com/chat?a`
  8. const parsed = fastURI.parse(uri)
  9. t.equal(parsed.resourceName, '/chat?a?b', `${scheme} parse preserves the resource name`)
  10. t.equal(fastURI.serialize(parsed), uri, `${scheme} parsed components round-trip`)
  11. t.equal(
  12. fastURI.serialize({ scheme, host: 'example.com', resourceName: '/chat?a?b' }),
  13. uri,
  14. `${scheme} resource name serializes without truncation`
  15. )
  16. t.equal(fastURI.normalize(uri), uri, `${scheme} normalization preserves the full query`)
  17. t.equal(fastURI.equal(uri, truncatedURI), false, `${scheme} equality distinguishes the full query`)
  18. }
  19. t.end()
  20. })