UNPKG

catberry-uri

Version:

URI parser strictly according to RFC 3986

267 lines 9.43 kB
{ "items": [ { "name": "full URI", "uri": "scheme-+.scheme1234567890://ABCabc123-._~!$&'()*+,;=:ABCabc123-._~!$&'()*+,;=@ABCabc123_.~-!$&'()*+,;=:[]:1234/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": "scheme-+.scheme1234567890", "authority": { "userInfo": { "user": "ABCabc123-._~!$&'()*+,;=", "password": "ABCabc123-._~!$&'()*+,;=" }, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": "1234" }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI without scheme", "uri": "//ABCabc123-._~!$&'()*+,;=:ABCabc123-._~!$&'()*+,;=@ABCabc123_.~-!$&'()*+,;=:[]:1234/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": { "user": "ABCabc123-._~!$&'()*+,;=", "password": "ABCabc123-._~!$&'()*+,;=" }, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": "1234" }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI user info without password content", "uri": "//ABCabc123-._~!$&'()*+,;=:@ABCabc123_.~-!$&'()*+,;=:[]:1234/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": { "user": "ABCabc123-._~!$&'()*+,;=", "password": "" }, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": "1234" }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI user info without password", "uri": "//ABCabc123-._~!$&'()*+,;=@ABCabc123_.~-!$&'()*+,;=:[]:1234/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": { "user": "ABCabc123-._~!$&'()*+,;=", "password": null }, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": "1234" }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI user info without content", "uri": "//@ABCabc123_.~-!$&'()*+,;=:[]:1234/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": { "user": null, "password": null }, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": "1234" }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI authority without user info", "uri": "//ABCabc123_.~-!$&'()*+,;=:[]:1234/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": null, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": "1234" }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI authority without port content", "uri": "//ABCabc123_.~-!$&'()*+,;=:[]:/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": null, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": "" }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI authority without port", "uri": "//ABCabc123_.~-!$&'()*+,;=:[]/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": null, "host": "ABCabc123_.~-!$&'()*+,;=:[]", "port": null }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI authority without host", "uri": "///ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": { "userInfo": null, "host": null, "port": null }, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI without authority", "uri": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#ABCabc123-._~!$&'()*+,;=:@/?", "expected": { "scheme": null, "authority": null, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "ABCabc123-._~!$&'()*+,;=:@/?" } }, { "name": "URI without fragment content", "uri": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?#", "expected": { "scheme": null, "authority": null, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": "" } }, { "name": "URI without fragment", "uri": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?ABCabc123-._~!$'()*,;:@/?=ABCabc123-._~!$'()*,;:@/?&ABCabc1234-._~!$'()*,;:@/?=ABCabc1234-._~!$'()*,;:@/?", "expected": { "scheme": null, "authority": null, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": { "ABCabc123-._~!$'()*,;:@/?": "ABCabc123-._~!$'()*,;:@/?", "ABCabc1234-._~!$'()*,;:@/?": "ABCabc1234-._~!$'()*,;:@/?" }, "fragment": null } }, { "name": "URI without query content", "uri": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@?", "expected": { "scheme": null, "authority": null, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": {}, "fragment": null } }, { "name": "URI without query", "uri": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "expected": { "scheme": null, "authority": null, "path": "/ABCabc123-._~!$&'()*+,;=:@/ABCabc123-._~!$&'()*+,;=:@", "query": null, "fragment": null } }, { "name": "URI /", "uri": "/", "expected": { "scheme": null, "authority": null, "path": "/", "query": null, "fragment": null } }, { "name": "empty URI", "uri": "", "expected": { "scheme": null, "authority": null, "path": "", "query": null, "fragment": null } } ] }