44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
'use strict'
|
|
|
|
const { test } = require('node:test')
|
|
const FindMyWay = require('..')
|
|
|
|
test('sanitizeUrlPath should decode reserved characters inside params and strip querystring', t => {
|
|
t.plan(1)
|
|
|
|
const url = '/%65ncod%65d?foo=bar'
|
|
const sanitized = FindMyWay.sanitizeUrlPath(url)
|
|
|
|
t.assert.equal(sanitized, '/encoded')
|
|
})
|
|
|
|
test('sanitizeUrlPath should decode non-reserved characters but keep reserved encoded when not in params', t => {
|
|
t.plan(1)
|
|
|
|
const url = '/hello/%20world?foo=bar'
|
|
const sanitized = FindMyWay.sanitizeUrlPath(url)
|
|
|
|
t.assert.equal(sanitized, '/hello/ world')
|
|
})
|
|
|
|
test('sanitizeUrlPath should treat semicolon as queryparameter delimiter when enabled', t => {
|
|
t.plan(2)
|
|
|
|
const url = '/hello/%23world;foo=bar'
|
|
|
|
const sanitizedWithDelimiter = FindMyWay.sanitizeUrlPath(url, true)
|
|
t.assert.equal(sanitizedWithDelimiter, '/hello/#world')
|
|
|
|
const sanitizedWithoutDelimiter = FindMyWay.sanitizeUrlPath(url, false)
|
|
t.assert.equal(sanitizedWithoutDelimiter, '/hello/#world;foo=bar')
|
|
})
|
|
|
|
test('sanitizeUrlPath trigger an error if the url is invalid', t => {
|
|
t.plan(1)
|
|
|
|
const url = '/Hello%3xWorld/world'
|
|
t.assert.throws(() => {
|
|
FindMyWay.sanitizeUrlPath(url)
|
|
}, 'URIError: URI malformed')
|
|
})
|