aboutsummaryrefslogtreecommitdiff
path: root/test/urltest.lua
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2011-05-25 20:57:22 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2011-05-25 20:57:22 +0000
commit3a8ba90dfb0c2eb224f317dd692ede426691e72a (patch)
treefe1cc5379a2e0e031663fe9c15d908653844bc73 /test/urltest.lua
parentbce60be30fe8e9c1b0eb33128c23c93d7bca5303 (diff)
downloadluasocket-3a8ba90dfb0c2eb224f317dd692ede426691e72a.tar.gz
luasocket-3a8ba90dfb0c2eb224f317dd692ede426691e72a.tar.bz2
luasocket-3a8ba90dfb0c2eb224f317dd692ede426691e72a.zip
Saving before big changes to support IPv6.
Diffstat (limited to 'test/urltest.lua')
-rw-r--r--test/urltest.lua620
1 files changed, 310 insertions, 310 deletions
diff --git a/test/urltest.lua b/test/urltest.lua
index 8dc0c14..d46cb03 100644
--- a/test/urltest.lua
+++ b/test/urltest.lua
@@ -3,439 +3,439 @@ socket.url = require("socket.url")
3dofile("testsupport.lua") 3dofile("testsupport.lua")
4 4
5local check_build_url = function(parsed) 5local check_build_url = function(parsed)
6 local built = socket.url.build(parsed) 6 local built = socket.url.build(parsed)
7 if built ~= parsed.url then 7 if built ~= parsed.url then
8 print("built is different from expected") 8 print("built is different from expected")
9 print(built) 9 print(built)
10 print(expected) 10 print(expected)
11 exit() 11 exit()
12 end 12 end
13end 13end
14 14
15local check_protect = function(parsed, path, unsafe) 15local check_protect = function(parsed, path, unsafe)
16 local built = socket.url.build_path(parsed, unsafe) 16 local built = socket.url.build_path(parsed, unsafe)
17 if built ~= path then 17 if built ~= path then
18 print(built, path) 18 print(built, path)
19 print("path composition failed.") 19 print("path composition failed.")
20 exit() 20 exit()
21 end 21 end
22end 22end
23 23
24local check_invert = function(url) 24local check_invert = function(url)
25 local parsed = socket.url.parse(url) 25 local parsed = socket.url.parse(url)
26 parsed.path = socket.url.build_path(socket.url.parse_path(parsed.path)) 26 parsed.path = socket.url.build_path(socket.url.parse_path(parsed.path))
27 local rebuilt = socket.url.build(parsed) 27 local rebuilt = socket.url.build(parsed)
28 if rebuilt ~= url then 28 if rebuilt ~= url then
29 print(url, rebuilt) 29 print(url, rebuilt)
30 print("original and rebuilt are different") 30 print("original and rebuilt are different")
31 exit() 31 exit()
32 end 32 end
33end 33end
34 34
35local check_parse_path = function(path, expect) 35local check_parse_path = function(path, expect)
36 local parsed = socket.url.parse_path(path) 36 local parsed = socket.url.parse_path(path)
37 for i = 1, math.max(table.getn(parsed), table.getn(expect)) do 37 for i = 1, math.max(table.getn(parsed), table.getn(expect)) do
38 if parsed[i] ~= expect[i] then 38 if parsed[i] ~= expect[i] then
39 print(path) 39 print(path)
40 exit() 40 exit()
41 end 41 end
42 end 42 end
43 if expect.is_directory ~= parsed.is_directory then 43 if expect.is_directory ~= parsed.is_directory then
44 print(path) 44 print(path)
45 print("is_directory mismatch") 45 print("is_directory mismatch")
46 exit() 46 exit()
47 end 47 end
48 if expect.is_absolute ~= parsed.is_absolute then 48 if expect.is_absolute ~= parsed.is_absolute then
49 print(path) 49 print(path)
50 print("is_absolute mismatch") 50 print("is_absolute mismatch")
51 exit() 51 exit()
52 end 52 end
53 local built = socket.url.build_path(expect) 53 local built = socket.url.build_path(expect)
54 if built ~= path then 54 if built ~= path then
55 print(built, path) 55 print(built, path)
56 print("path composition failed.") 56 print("path composition failed.")
57 exit() 57 exit()
58 end 58 end
59end 59end
60 60
61local check_absolute_url = function(base, relative, absolute) 61local check_absolute_url = function(base, relative, absolute)
62 local res = socket.url.absolute(base, relative) 62 local res = socket.url.absolute(base, relative)
63 if res ~= absolute then 63 if res ~= absolute then
64 io.write("absolute: In test for '", relative, "' expected '", 64 io.write("absolute: In test for '", relative, "' expected '",
65 absolute, "' but got '", res, "'\n") 65 absolute, "' but got '", res, "'\n")
66 exit() 66 exit()
67 end 67 end
68end 68end
69 69
70local check_parse_url = function(gaba) 70local check_parse_url = function(gaba)
71 local url = gaba.url 71 local url = gaba.url
72 gaba.url = nil 72 gaba.url = nil
73 local parsed = socket.url.parse(url) 73 local parsed = socket.url.parse(url)
74 for i, v in pairs(gaba) do 74 for i, v in pairs(gaba) do
75 if v ~= parsed[i] then 75 if v ~= parsed[i] then
76 io.write("parse: In test for '", url, "' expected ", i, " = '", 76 io.write("parse: In test for '", url, "' expected ", i, " = '",
77 v, "' but got '", tostring(parsed[i]), "'\n") 77 v, "' but got '", tostring(parsed[i]), "'\n")
78 for i,v in pairs(parsed) do print(i,v) end 78 for i,v in pairs(parsed) do print(i,v) end
79 exit() 79 exit()
80 end 80 end
81 end 81 end
82 for i, v in pairs(parsed) do 82 for i, v in pairs(parsed) do
83 if v ~= gaba[i] then 83 if v ~= gaba[i] then
84 io.write("parse: In test for '", url, "' expected ", i, " = '", 84 io.write("parse: In test for '", url, "' expected ", i, " = '",
85 tostring(gaba[i]), "' but got '", v, "'\n") 85 tostring(gaba[i]), "' but got '", v, "'\n")
86 for i,v in pairs(parsed) do print(i,v) end 86 for i,v in pairs(parsed) do print(i,v) end
87 exit() 87 exit()
88 end 88 end
89 end 89 end
90end 90end
91 91
92print("testing URL parsing") 92print("testing URL parsing")
93check_parse_url{ 93check_parse_url{
94 url = "scheme://userinfo@host:port/path;params?query#fragment", 94 url = "scheme://userinfo@host:port/path;params?query#fragment",
95 scheme = "scheme", 95 scheme = "scheme",
96 authority = "userinfo@host:port", 96 authority = "userinfo@host:port",
97 host = "host", 97 host = "host",
98 port = "port", 98 port = "port",
99 userinfo = "userinfo", 99 userinfo = "userinfo",
100 user = "userinfo", 100 user = "userinfo",
101 path = "/path", 101 path = "/path",
102 params = "params", 102 params = "params",
103 query = "query", 103 query = "query",
104 fragment = "fragment" 104 fragment = "fragment"
105} 105}
106 106
107check_parse_url{ 107check_parse_url{
108 url = "scheme://user:password@host:port/path;params?query#fragment", 108 url = "scheme://user:password@host:port/path;params?query#fragment",
109 scheme = "scheme", 109 scheme = "scheme",
110 authority = "user:password@host:port", 110 authority = "user:password@host:port",
111 host = "host", 111 host = "host",
112 port = "port", 112 port = "port",
113 userinfo = "user:password", 113 userinfo = "user:password",
114 user = "user", 114 user = "user",
115 password = "password", 115 password = "password",
116 path = "/path", 116 path = "/path",
117 params = "params", 117 params = "params",
118 query = "query", 118 query = "query",
119 fragment = "fragment", 119 fragment = "fragment",
120} 120}
121 121
122check_parse_url{ 122check_parse_url{
123 url = "scheme://userinfo@host:port/path;params?query#", 123 url = "scheme://userinfo@host:port/path;params?query#",
124 scheme = "scheme", 124 scheme = "scheme",
125 authority = "userinfo@host:port", 125 authority = "userinfo@host:port",
126 host = "host", 126 host = "host",
127 port = "port", 127 port = "port",
128 userinfo = "userinfo", 128 userinfo = "userinfo",
129 user = "userinfo", 129 user = "userinfo",
130 path = "/path", 130 path = "/path",
131 params = "params", 131 params = "params",
132 query = "query", 132 query = "query",
133 fragment = "" 133 fragment = ""
134} 134}
135 135
136check_parse_url{ 136check_parse_url{
137 url = "scheme://userinfo@host:port/path;params?#fragment", 137 url = "scheme://userinfo@host:port/path;params?#fragment",
138 scheme = "scheme", 138 scheme = "scheme",
139 authority = "userinfo@host:port", 139 authority = "userinfo@host:port",
140 host = "host", 140 host = "host",
141 port = "port", 141 port = "port",
142 userinfo = "userinfo", 142 userinfo = "userinfo",
143 user = "userinfo", 143 user = "userinfo",
144 path = "/path", 144 path = "/path",
145 params = "params", 145 params = "params",
146 query = "", 146 query = "",
147 fragment = "fragment" 147 fragment = "fragment"
148} 148}
149 149
150check_parse_url{ 150check_parse_url{
151 url = "scheme://userinfo@host:port/path;params#fragment", 151 url = "scheme://userinfo@host:port/path;params#fragment",
152 scheme = "scheme", 152 scheme = "scheme",
153 authority = "userinfo@host:port", 153 authority = "userinfo@host:port",
154 host = "host", 154 host = "host",
155 port = "port", 155 port = "port",
156 userinfo = "userinfo", 156 userinfo = "userinfo",
157 user = "userinfo", 157 user = "userinfo",
158 path = "/path", 158 path = "/path",
159 params = "params", 159 params = "params",
160 fragment = "fragment" 160 fragment = "fragment"
161} 161}
162 162
163check_parse_url{ 163check_parse_url{
164 url = "scheme://userinfo@host:port/path;?query#fragment", 164 url = "scheme://userinfo@host:port/path;?query#fragment",
165 scheme = "scheme", 165 scheme = "scheme",
166 authority = "userinfo@host:port", 166 authority = "userinfo@host:port",
167 host = "host", 167 host = "host",
168 port = "port", 168 port = "port",
169 userinfo = "userinfo", 169 userinfo = "userinfo",
170 user = "userinfo", 170 user = "userinfo",
171 path = "/path", 171 path = "/path",
172 params = "", 172 params = "",
173 query = "query", 173 query = "query",
174 fragment = "fragment" 174 fragment = "fragment"
175} 175}
176 176
177check_parse_url{ 177check_parse_url{
178 url = "scheme://userinfo@host:port/path?query#fragment", 178 url = "scheme://userinfo@host:port/path?query#fragment",
179 scheme = "scheme", 179 scheme = "scheme",
180 authority = "userinfo@host:port", 180 authority = "userinfo@host:port",
181 host = "host", 181 host = "host",
182 port = "port", 182 port = "port",
183 userinfo = "userinfo", 183 userinfo = "userinfo",
184 user = "userinfo", 184 user = "userinfo",
185 path = "/path", 185 path = "/path",
186 query = "query", 186 query = "query",
187 fragment = "fragment" 187 fragment = "fragment"
188} 188}
189 189
190check_parse_url{ 190check_parse_url{
191 url = "scheme://userinfo@host:port/;params?query#fragment", 191 url = "scheme://userinfo@host:port/;params?query#fragment",
192 scheme = "scheme", 192 scheme = "scheme",
193 authority = "userinfo@host:port", 193 authority = "userinfo@host:port",
194 host = "host", 194 host = "host",
195 port = "port", 195 port = "port",
196 userinfo = "userinfo", 196 userinfo = "userinfo",
197 user = "userinfo", 197 user = "userinfo",
198 path = "/", 198 path = "/",
199 params = "params", 199 params = "params",
200 query = "query", 200 query = "query",
201 fragment = "fragment" 201 fragment = "fragment"
202} 202}
203 203
204check_parse_url{ 204check_parse_url{
205 url = "scheme://userinfo@host:port", 205 url = "scheme://userinfo@host:port",
206 scheme = "scheme", 206 scheme = "scheme",
207 authority = "userinfo@host:port", 207 authority = "userinfo@host:port",
208 host = "host", 208 host = "host",
209 port = "port", 209 port = "port",
210 userinfo = "userinfo", 210 userinfo = "userinfo",
211 user = "userinfo", 211 user = "userinfo",
212} 212}
213 213
214check_parse_url{ 214check_parse_url{
215 url = "//userinfo@host:port/path;params?query#fragment", 215 url = "//userinfo@host:port/path;params?query#fragment",
216 authority = "userinfo@host:port", 216 authority = "userinfo@host:port",
217 host = "host", 217 host = "host",
218 port = "port", 218 port = "port",
219 userinfo = "userinfo", 219 userinfo = "userinfo",
220 user = "userinfo", 220 user = "userinfo",
221 path = "/path", 221 path = "/path",
222 params = "params", 222 params = "params",
223 query = "query", 223 query = "query",
224 fragment = "fragment" 224 fragment = "fragment"
225} 225}
226 226
227check_parse_url{ 227check_parse_url{
228 url = "//userinfo@host:port/path", 228 url = "//userinfo@host:port/path",
229 authority = "userinfo@host:port", 229 authority = "userinfo@host:port",
230 host = "host", 230 host = "host",
231 port = "port", 231 port = "port",
232 userinfo = "userinfo", 232 userinfo = "userinfo",
233 user = "userinfo", 233 user = "userinfo",
234 path = "/path", 234 path = "/path",
235} 235}
236 236
237check_parse_url{ 237check_parse_url{
238 url = "//userinfo@host/path", 238 url = "//userinfo@host/path",
239 authority = "userinfo@host", 239 authority = "userinfo@host",
240 host = "host", 240 host = "host",
241 userinfo = "userinfo", 241 userinfo = "userinfo",
242 user = "userinfo", 242 user = "userinfo",
243 path = "/path", 243 path = "/path",
244} 244}
245 245
246check_parse_url{ 246check_parse_url{
247 url = "//user:password@host/path", 247 url = "//user:password@host/path",
248 authority = "user:password@host", 248 authority = "user:password@host",
249 host = "host", 249 host = "host",
250 userinfo = "user:password", 250 userinfo = "user:password",
251 password = "password", 251 password = "password",
252 user = "user", 252 user = "user",
253 path = "/path", 253 path = "/path",
254} 254}
255 255
256check_parse_url{ 256check_parse_url{
257 url = "//user:@host/path", 257 url = "//user:@host/path",
258 authority = "user:@host", 258 authority = "user:@host",
259 host = "host", 259 host = "host",
260 userinfo = "user:", 260 userinfo = "user:",
261 password = "", 261 password = "",
262 user = "user", 262 user = "user",
263 path = "/path", 263 path = "/path",
264} 264}
265 265
266check_parse_url{ 266check_parse_url{
267 url = "//user@host:port/path", 267 url = "//user@host:port/path",
268 authority = "user@host:port", 268 authority = "user@host:port",
269 host = "host", 269 host = "host",
270 userinfo = "user", 270 userinfo = "user",
271 user = "user", 271 user = "user",
272 port = "port", 272 port = "port",
273 path = "/path", 273 path = "/path",
274} 274}
275 275
276check_parse_url{ 276check_parse_url{
277 url = "//host:port/path", 277 url = "//host:port/path",
278 authority = "host:port", 278 authority = "host:port",
279 port = "port", 279 port = "port",
280 host = "host", 280 host = "host",
281 path = "/path", 281 path = "/path",
282} 282}
283 283
284check_parse_url{ 284check_parse_url{
285 url = "//host/path", 285 url = "//host/path",
286 authority = "host", 286 authority = "host",
287 host = "host", 287 host = "host",
288 path = "/path", 288 path = "/path",
289} 289}
290 290
291check_parse_url{ 291check_parse_url{
292 url = "//host", 292 url = "//host",
293 authority = "host", 293 authority = "host",
294 host = "host", 294 host = "host",
295} 295}
296 296
297check_parse_url{ 297check_parse_url{
298 url = "/path", 298 url = "/path",
299 path = "/path", 299 path = "/path",
300} 300}
301 301
302check_parse_url{ 302check_parse_url{
303 url = "path", 303 url = "path",
304 path = "path", 304 path = "path",
305} 305}
306 306
307print("testing URL building") 307print("testing URL building")
308check_build_url { 308check_build_url {
309 url = "scheme://user:password@host:port/path;params?query#fragment", 309 url = "scheme://user:password@host:port/path;params?query#fragment",
310 scheme = "scheme", 310 scheme = "scheme",
311 host = "host", 311 host = "host",
312 port = "port", 312 port = "port",
313 user = "user", 313 user = "user",
314 password = "password", 314 password = "password",
315 path = "/path", 315 path = "/path",
316 params = "params", 316 params = "params",
317 query = "query", 317 query = "query",
318 fragment = "fragment" 318 fragment = "fragment"
319} 319}
320 320
321check_build_url { 321check_build_url {
322 url = "scheme://user:password@host/path;params?query#fragment", 322 url = "scheme://user:password@host/path;params?query#fragment",
323 scheme = "scheme", 323 scheme = "scheme",
324 host = "host", 324 host = "host",
325 user = "user", 325 user = "user",
326 password = "password", 326 password = "password",
327 path = "/path", 327 path = "/path",
328 params = "params", 328 params = "params",
329 query = "query", 329 query = "query",
330 fragment = "fragment" 330 fragment = "fragment"
331} 331}
332 332
333check_build_url { 333check_build_url {
334 url = "scheme://user@host/path;params?query#fragment", 334 url = "scheme://user@host/path;params?query#fragment",
335 scheme = "scheme", 335 scheme = "scheme",
336 host = "host", 336 host = "host",
337 user = "user", 337 user = "user",
338 path = "/path", 338 path = "/path",
339 params = "params", 339 params = "params",
340 query = "query", 340 query = "query",
341 fragment = "fragment" 341 fragment = "fragment"
342} 342}
343 343
344check_build_url { 344check_build_url {
345 url = "scheme://host/path;params?query#fragment", 345 url = "scheme://host/path;params?query#fragment",
346 scheme = "scheme", 346 scheme = "scheme",
347 host = "host", 347 host = "host",
348 path = "/path", 348 path = "/path",
349 params = "params", 349 params = "params",
350 query = "query", 350 query = "query",
351 fragment = "fragment" 351 fragment = "fragment"
352} 352}
353 353
354check_build_url { 354check_build_url {
355 url = "scheme://host/path;params#fragment", 355 url = "scheme://host/path;params#fragment",
356 scheme = "scheme", 356 scheme = "scheme",
357 host = "host", 357 host = "host",
358 path = "/path", 358 path = "/path",
359 params = "params", 359 params = "params",
360 fragment = "fragment" 360 fragment = "fragment"
361} 361}
362 362
363check_build_url { 363check_build_url {
364 url = "scheme://host/path#fragment", 364 url = "scheme://host/path#fragment",
365 scheme = "scheme", 365 scheme = "scheme",
366 host = "host", 366 host = "host",
367 path = "/path", 367 path = "/path",
368 fragment = "fragment" 368 fragment = "fragment"
369} 369}
370 370
371check_build_url { 371check_build_url {
372 url = "scheme://host/path", 372 url = "scheme://host/path",
373 scheme = "scheme", 373 scheme = "scheme",
374 host = "host", 374 host = "host",
375 path = "/path", 375 path = "/path",
376} 376}
377 377
378check_build_url { 378check_build_url {
379 url = "//host/path", 379 url = "//host/path",
380 host = "host", 380 host = "host",
381 path = "/path", 381 path = "/path",
382} 382}
383 383
384check_build_url { 384check_build_url {
385 url = "/path", 385 url = "/path",
386 path = "/path", 386 path = "/path",
387} 387}
388 388
389check_build_url { 389check_build_url {
390 url = "scheme://user:password@host:port/path;params?query#fragment", 390 url = "scheme://user:password@host:port/path;params?query#fragment",
391 scheme = "scheme", 391 scheme = "scheme",
392 host = "host", 392 host = "host",
393 port = "port", 393 port = "port",
394 user = "user", 394 user = "user",
395 userinfo = "not used", 395 userinfo = "not used",
396 password = "password", 396 password = "password",
397 path = "/path", 397 path = "/path",
398 params = "params", 398 params = "params",
399 query = "query", 399 query = "query",
400 fragment = "fragment" 400 fragment = "fragment"
401} 401}
402 402
403check_build_url { 403check_build_url {
404 url = "scheme://user:password@host:port/path;params?query#fragment", 404 url = "scheme://user:password@host:port/path;params?query#fragment",
405 scheme = "scheme", 405 scheme = "scheme",
406 host = "host", 406 host = "host",
407 port = "port", 407 port = "port",
408 user = "user", 408 user = "user",
409 userinfo = "not used", 409 userinfo = "not used",
410 authority = "not used", 410 authority = "not used",
411 password = "password", 411 password = "password",
412 path = "/path", 412 path = "/path",
413 params = "params", 413 params = "params",
414 query = "query", 414 query = "query",
415 fragment = "fragment" 415 fragment = "fragment"
416} 416}
417 417
418check_build_url { 418check_build_url {
419 url = "scheme://user:password@host:port/path;params?query#fragment", 419 url = "scheme://user:password@host:port/path;params?query#fragment",
420 scheme = "scheme", 420 scheme = "scheme",
421 host = "host", 421 host = "host",
422 port = "port", 422 port = "port",
423 userinfo = "user:password", 423 userinfo = "user:password",
424 authority = "not used", 424 authority = "not used",
425 path = "/path", 425 path = "/path",
426 params = "params", 426 params = "params",
427 query = "query", 427 query = "query",
428 fragment = "fragment" 428 fragment = "fragment"
429} 429}
430 430
431check_build_url { 431check_build_url {
432 url = "scheme://user:password@host:port/path;params?query#fragment", 432 url = "scheme://user:password@host:port/path;params?query#fragment",
433 scheme = "scheme", 433 scheme = "scheme",
434 authority = "user:password@host:port", 434 authority = "user:password@host:port",
435 path = "/path", 435 path = "/path",
436 params = "params", 436 params = "params",
437 query = "query", 437 query = "query",
438 fragment = "fragment" 438 fragment = "fragment"
439} 439}
440 440
441-- standard RFC tests 441-- standard RFC tests
@@ -488,11 +488,11 @@ print("testing path parsing and composition")
488check_parse_path("/eu/tu/ele", { "eu", "tu", "ele"; is_absolute = 1 }) 488check_parse_path("/eu/tu/ele", { "eu", "tu", "ele"; is_absolute = 1 })
489check_parse_path("/eu/", { "eu"; is_absolute = 1, is_directory = 1 }) 489check_parse_path("/eu/", { "eu"; is_absolute = 1, is_directory = 1 })
490check_parse_path("eu/tu/ele/nos/vos/eles/", 490check_parse_path("eu/tu/ele/nos/vos/eles/",
491 { "eu", "tu", "ele", "nos", "vos", "eles"; is_directory = 1}) 491 { "eu", "tu", "ele", "nos", "vos", "eles"; is_directory = 1})
492check_parse_path("/", { is_absolute = 1, is_directory = 1}) 492check_parse_path("/", { is_absolute = 1, is_directory = 1})
493check_parse_path("", { }) 493check_parse_path("", { })
494check_parse_path("eu%01/%02tu/e%03l%04e/nos/vos%05/e%12les/", 494check_parse_path("eu%01/%02tu/e%03l%04e/nos/vos%05/e%12les/",
495 { "eu\1", "\2tu", "e\3l\4e", "nos", "vos\5", "e\18les"; is_directory = 1}) 495 { "eu\1", "\2tu", "e\3l\4e", "nos", "vos\5", "e\18les"; is_directory = 1})
496check_parse_path("eu/tu", { "eu", "tu" }) 496check_parse_path("eu/tu", { "eu", "tu" })
497 497
498print("testing path protection") 498print("testing path protection")