1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
| 'use strict'
|
| const test = require('tape')
| const fastifyURI = require('../')
| const urijs = require('uri-js')
|
| test('compatibility Parse', (t) => {
| const toParse = [
| '//www.g.com/error\n/bleh/bleh',
| 'https://fastify.org',
| '/definitions/Record%3Cstring%2CPerson%3E',
| '//10.10.10.10',
| // '//10.10.000.10', <-- not a valid URI per URI spec: https://datatracker.ietf.org/doc/html/rfc5954#section-4.1
| '//[2001:db8::7%en0]',
| '//[2001:dbZ::1]:80',
| '//[2001:db8::1]:80',
| '//[2001:db8::001]:80',
| 'uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body',
| 'http://user:pass@example.com:123/one/space in.url?q1=a1&q2=a2#body',
| 'http://User:Pass@example.com:123/one/space in.url?q1=a1&q2=a2#body',
| 'http://A%3AB@example.com:123/one/space',
| '//[::ffff:129.144.52.38]',
| 'uri://10.10.10.10.example.com/en/process',
| '//[2606:2800:220:1:248:1893:25c8:1946]/test',
| 'ws://example.com/chat',
| 'ws://example.com/foo?bar=baz',
| 'wss://example.com/?bar=baz',
| 'wss://example.com/chat',
| 'wss://example.com/foo?bar=baz',
| 'wss://example.com/?bar=baz',
| 'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6',
| 'urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6',
| 'urn:example:%D0%B0123,z456',
| '//[2606:2800:220:1:248:1893:25c8:1946:43209]',
| 'http://foo.bar',
| 'http://',
| '#/$defs/stringMap',
| '#/$defs/string%20Map',
| '#/$defs/string Map',
| '//?json=%7B%22foo%22%3A%22bar%22%7D'
| // 'mailto:chris@example.com'-203845,
| // 'mailto:infobot@example.com?subject=current-issue',
| // 'mailto:infobot@example.com?body=send%20current-issue',
| // 'mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index',
| // 'mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E',
| // 'mailto:majordomo@example.com?body=subscribe%20bamboo-l',
| // 'mailto:joe@example.com?cc=bob@example.com&body=hello',
| // 'mailto:gorby%25kremvax@example.com',
| // 'mailto:unlikely%3Faddress@example.com?blat=foop',
| // 'mailto:Mike%26family@example.org',
| // 'mailto:%22not%40me%22@example.org',
| // 'mailto:%22oh%5C%5Cno%22@example.org',
| // 'mailto:%22%5C%5C%5C%22it\'s%5C%20ugly%5C%5C%5C%22%22@example.org',
| // 'mailto:user@example.org?subject=caf%C3%A9',
| // 'mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D',
| // 'mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D',
| // 'mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9',
| // 'mailto:user@%E7%B4%8D%E8%B1%86.example.org?subject=Test&body=NATTO'
| ]
| toParse.forEach((x) => {
| t.same(fastifyURI.parse(x), urijs.parse(x), 'Compatibility parse: ' + x)
| })
| t.end()
| })
|
| test('compatibility serialize', (t) => {
| const toSerialize = [
| { host: '10.10.10.10.example.com' },
| { host: '2001:db8::7' },
| { host: '::ffff:129.144.52.38' },
| { host: '2606:2800:220:1:248:1893:25c8:1946' },
| { host: '10.10.10.10.example.com' },
| { host: '10.10.10.10' },
| { path: '?query' },
| { path: 'foo:bar' },
| { path: '//path' },
| {
| scheme: 'uri',
| host: 'example.com',
| port: '9000'
| },
| {
| scheme: 'uri',
| userinfo: 'foo:bar',
| host: 'example.com',
| port: 1,
| path: 'path',
| query: 'query',
| fragment: 'fragment'
| },
| {
| scheme: '',
| userinfo: '',
| host: '',
| port: 0,
| path: '',
| query: '',
| fragment: ''
| },
| {
| scheme: undefined,
| userinfo: undefined,
| host: undefined,
| port: undefined,
| path: undefined,
| query: undefined,
| fragment: undefined
| },
| { host: 'fe80::a%en1' },
| { host: 'fe80::a%25en1' },
| {
| scheme: 'ws',
| host: 'example.com',
| resourceName: '/foo?bar',
| secure: true
| },
| {
| scheme: 'scheme',
| path: 'with:colon'
| }
| ]
| toSerialize.forEach((x) => {
| const r = JSON.stringify(x)
| t.same(
| fastifyURI.serialize(x),
| urijs.serialize(x),
| 'Compatibility serialize: ' + JSON.stringify(r)
| )
| })
| t.end()
| })
|
|