mirror of
https://github.com/nmap/nmap.git
synced 2025-12-12 10:49:02 +00:00
Consolidate URL tests and add round-trip parsing checks
This commit is contained in:
@@ -456,8 +456,9 @@ end
|
|||||||
|
|
||||||
test_suite = unittest.TestSuite:new()
|
test_suite = unittest.TestSuite:new()
|
||||||
|
|
||||||
local result = parse("https://dummy:pass@example.com:9999/example.ext?k1=v1&k2=v2#fragment=/")
|
local test_urls = {
|
||||||
local expected = {
|
{ _url = "https://dummy:pass@example.com:9999/example.ext?k1=v1&k2=v2#fragment=/",
|
||||||
|
_res = {
|
||||||
scheme = "https",
|
scheme = "https",
|
||||||
authority = "dummy:pass@example.com:9999",
|
authority = "dummy:pass@example.com:9999",
|
||||||
userinfo = "dummy:pass",
|
userinfo = "dummy:pass",
|
||||||
@@ -470,15 +471,11 @@ local expected = {
|
|||||||
fragment = "fragment=/",
|
fragment = "fragment=/",
|
||||||
is_folder = false,
|
is_folder = false,
|
||||||
extension = "ext",
|
extension = "ext",
|
||||||
}
|
},
|
||||||
|
_nil = {"params"}
|
||||||
test_suite:add_test(unittest.is_nil(result.params), "params")
|
},
|
||||||
for k, v in pairs(expected) do
|
{ _url = "http://dummy@example.com:1234/example.ext/another.php;k1=v1?k2=v2#k3=v3",
|
||||||
test_suite:add_test(unittest.equal(result[k], v), k)
|
_res = {
|
||||||
end
|
|
||||||
|
|
||||||
local result = parse("http://dummy@example.com:1234/example.ext/another.php;k1=v1?k2=v2#k3=v3")
|
|
||||||
local expected = {
|
|
||||||
scheme = "http",
|
scheme = "http",
|
||||||
authority = "dummy@example.com:1234",
|
authority = "dummy@example.com:1234",
|
||||||
userinfo = "dummy",
|
userinfo = "dummy",
|
||||||
@@ -491,31 +488,33 @@ local expected = {
|
|||||||
fragment = "k3=v3",
|
fragment = "k3=v3",
|
||||||
is_folder = false,
|
is_folder = false,
|
||||||
extension = "php",
|
extension = "php",
|
||||||
}
|
},
|
||||||
|
_nil = {"password"}
|
||||||
test_suite:add_test(unittest.is_nil(result.password), "password")
|
},
|
||||||
for k, v in pairs(expected) do
|
{ _url = "//example/example.folder/?k1=v1&k2=v2#k3/v3.bar",
|
||||||
test_suite:add_test(unittest.equal(result[k], v), k)
|
_res = {
|
||||||
end
|
|
||||||
|
|
||||||
local result = parse("//example/example.folder/?k1=v1&k2=v2#k3/v3.bar")
|
|
||||||
local expected = {
|
|
||||||
authority = "example",
|
authority = "example",
|
||||||
host = "example",
|
host = "example",
|
||||||
path = "/example.folder/",
|
path = "/example.folder/",
|
||||||
query = "k1=v1&k2=v2",
|
query = "k1=v1&k2=v2",
|
||||||
fragment = "k3/v3.bar",
|
fragment = "k3/v3.bar",
|
||||||
is_folder = true,
|
is_folder = true,
|
||||||
|
},
|
||||||
|
_nil = {"scheme", "userinfo", "port", "params", "extension"}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
for _, t in ipairs(test_urls) do
|
||||||
test_suite:add_test(unittest.is_nil(result.scheme), "scheme")
|
local result = parse(t._url)
|
||||||
test_suite:add_test(unittest.is_nil(result.userinfo), "userinfo")
|
for _, nv in ipairs(t._nil) do
|
||||||
test_suite:add_test(unittest.is_nil(result.port), "port")
|
test_suite:add_test(unittest.is_nil(result[nv]), nv)
|
||||||
test_suite:add_test(unittest.is_nil(result.params), "params")
|
end
|
||||||
test_suite:add_test(unittest.is_nil(result.extension), "extension")
|
for k, v in pairs(t._res) do
|
||||||
for k, v in pairs(expected) do
|
|
||||||
test_suite:add_test(unittest.equal(result[k], v), k)
|
test_suite:add_test(unittest.equal(result[k], v), k)
|
||||||
end
|
end
|
||||||
|
test_suite:add_test(unittest.equal(build(t._res), t._url), "build test url")
|
||||||
|
test_suite:add_test(unittest.equal(build(result), t._url), "parse/build round trip")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- path merging tests for compliance with RFC 3986, section 5.2
|
-- path merging tests for compliance with RFC 3986, section 5.2
|
||||||
-- https://tools.ietf.org/html/rfc3986#section-5.2
|
-- https://tools.ietf.org/html/rfc3986#section-5.2
|
||||||
|
|||||||
Reference in New Issue
Block a user