diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/urltest.lua | 131 |
1 files changed, 121 insertions, 10 deletions
diff --git a/test/urltest.lua b/test/urltest.lua index d46cb03..71e4428 100644 --- a/test/urltest.lua +++ b/test/urltest.lua | |||
@@ -8,7 +8,7 @@ local check_build_url = function(parsed) | |||
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 | os.exit() |
12 | end | 12 | end |
13 | end | 13 | end |
14 | 14 | ||
@@ -17,7 +17,7 @@ local check_protect = function(parsed, path, 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 | os.exit() |
21 | end | 21 | end |
22 | end | 22 | end |
23 | 23 | ||
@@ -28,7 +28,7 @@ local check_invert = function(url) | |||
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 | os.exit() |
32 | end | 32 | end |
33 | end | 33 | end |
34 | 34 | ||
@@ -37,24 +37,24 @@ local check_parse_path = function(path, expect) | |||
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 | os.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 | os.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 | os.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 | os.exit() |
58 | end | 58 | end |
59 | end | 59 | end |
60 | 60 | ||
@@ -63,7 +63,7 @@ local check_absolute_url = function(base, relative, absolute) | |||
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 | os.exit() |
67 | end | 67 | end |
68 | end | 68 | end |
69 | 69 | ||
@@ -76,7 +76,7 @@ local check_parse_url = function(gaba) | |||
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 | os.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 |
@@ -84,7 +84,7 @@ local check_parse_url = function(gaba) | |||
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 | os.exit() |
88 | end | 88 | end |
89 | end | 89 | end |
90 | end | 90 | end |
@@ -304,6 +304,92 @@ check_parse_url{ | |||
304 | path = "path", | 304 | path = "path", |
305 | } | 305 | } |
306 | 306 | ||
307 | -- IPv6 tests | ||
308 | |||
309 | check_parse_url{ | ||
310 | url = "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html", | ||
311 | scheme = "http", | ||
312 | host = "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", | ||
313 | authority = "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80", | ||
314 | port = "80", | ||
315 | path = "/index.html" | ||
316 | } | ||
317 | |||
318 | check_parse_url{ | ||
319 | url = "http://[1080:0:0:0:8:800:200C:417A]/index.html", | ||
320 | scheme = "http", | ||
321 | host = "1080:0:0:0:8:800:200C:417A", | ||
322 | authority = "[1080:0:0:0:8:800:200C:417A]", | ||
323 | path = "/index.html" | ||
324 | } | ||
325 | |||
326 | check_parse_url{ | ||
327 | url = "http://[3ffe:2a00:100:7031::1]", | ||
328 | scheme = "http", | ||
329 | host = "3ffe:2a00:100:7031::1", | ||
330 | authority = "[3ffe:2a00:100:7031::1]", | ||
331 | } | ||
332 | |||
333 | check_parse_url{ | ||
334 | url = "http://[1080::8:800:200C:417A]/foo", | ||
335 | scheme = "http", | ||
336 | host = "1080::8:800:200C:417A", | ||
337 | authority = "[1080::8:800:200C:417A]", | ||
338 | path = "/foo" | ||
339 | } | ||
340 | |||
341 | check_parse_url{ | ||
342 | url = "http://[::192.9.5.5]/ipng", | ||
343 | scheme = "http", | ||
344 | host = "::192.9.5.5", | ||
345 | authority = "[::192.9.5.5]", | ||
346 | path = "/ipng" | ||
347 | } | ||
348 | |||
349 | check_parse_url{ | ||
350 | url = "http://[::FFFF:129.144.52.38]:80/index.html", | ||
351 | scheme = "http", | ||
352 | host = "::FFFF:129.144.52.38", | ||
353 | port = "80", | ||
354 | authority = "[::FFFF:129.144.52.38]:80", | ||
355 | path = "/index.html" | ||
356 | } | ||
357 | |||
358 | check_parse_url{ | ||
359 | url = "http://[2010:836B:4179::836B:4179]", | ||
360 | scheme = "http", | ||
361 | host = "2010:836B:4179::836B:4179", | ||
362 | authority = "[2010:836B:4179::836B:4179]", | ||
363 | } | ||
364 | |||
365 | check_parse_url{ | ||
366 | url = "//userinfo@[::FFFF:129.144.52.38]:port/path;params?query#fragment", | ||
367 | authority = "userinfo@[::FFFF:129.144.52.38]:port", | ||
368 | host = "::FFFF:129.144.52.38", | ||
369 | port = "port", | ||
370 | userinfo = "userinfo", | ||
371 | user = "userinfo", | ||
372 | path = "/path", | ||
373 | params = "params", | ||
374 | query = "query", | ||
375 | fragment = "fragment" | ||
376 | } | ||
377 | |||
378 | check_parse_url{ | ||
379 | url = "scheme://user:password@[::192.9.5.5]:port/path;params?query#fragment", | ||
380 | scheme = "scheme", | ||
381 | authority = "user:password@[::192.9.5.5]:port", | ||
382 | host = "::192.9.5.5", | ||
383 | port = "port", | ||
384 | userinfo = "user:password", | ||
385 | user = "user", | ||
386 | password = "password", | ||
387 | path = "/path", | ||
388 | params = "params", | ||
389 | query = "query", | ||
390 | fragment = "fragment" | ||
391 | } | ||
392 | |||
307 | print("testing URL building") | 393 | print("testing URL building") |
308 | check_build_url { | 394 | check_build_url { |
309 | url = "scheme://user:password@host:port/path;params?query#fragment", | 395 | url = "scheme://user:password@host:port/path;params?query#fragment", |
@@ -318,6 +404,30 @@ check_build_url { | |||
318 | fragment = "fragment" | 404 | fragment = "fragment" |
319 | } | 405 | } |
320 | 406 | ||
407 | check_build_url{ | ||
408 | url = "//userinfo@[::FFFF:129.144.52.38]:port/path;params?query#fragment", | ||
409 | host = "::FFFF:129.144.52.38", | ||
410 | port = "port", | ||
411 | user = "userinfo", | ||
412 | path = "/path", | ||
413 | params = "params", | ||
414 | query = "query", | ||
415 | fragment = "fragment" | ||
416 | } | ||
417 | |||
418 | check_build_url{ | ||
419 | url = "scheme://user:password@[::192.9.5.5]:port/path;params?query#fragment", | ||
420 | scheme = "scheme", | ||
421 | host = "::192.9.5.5", | ||
422 | port = "port", | ||
423 | user = "user", | ||
424 | password = "password", | ||
425 | path = "/path", | ||
426 | params = "params", | ||
427 | query = "query", | ||
428 | fragment = "fragment" | ||
429 | } | ||
430 | |||
321 | check_build_url { | 431 | check_build_url { |
322 | url = "scheme://user:password@host/path;params?query#fragment", | 432 | url = "scheme://user:password@host/path;params?query#fragment", |
323 | scheme = "scheme", | 433 | scheme = "scheme", |
@@ -520,5 +630,6 @@ check_invert("/b/c/d;param#fragment") | |||
520 | check_invert("/b/c/d;param?query#fragment") | 630 | check_invert("/b/c/d;param?query#fragment") |
521 | check_invert("/b/c/d?query") | 631 | check_invert("/b/c/d?query") |
522 | check_invert("/b/c/d;param?query") | 632 | check_invert("/b/c/d;param?query") |
633 | check_invert("http://he:man@[::192.168.1.1]/a/b/c/i.html;type=moo?this=that#mark") | ||
523 | 634 | ||
524 | print("the library passed all tests") | 635 | print("the library passed all tests") |