| [ |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "/foo/ba" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "/foo/bar/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [ "https://example.com/foo/bar" ], |
| "expected_match": { |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" } }, |
| "pathname": { "input": "/foo/bar", "groups": {} }, |
| "protocol": { "input": "https", "groups": { "0": "https" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [ "https://example.com/foo/bar/baz" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "hostname": "example.com", "pathname": "/foo/bar" }], |
| "expected_match": { |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" } }, |
| "pathname": { "input": "/foo/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "hostname": "example.com", "pathname": "/foo/bar/baz" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "/foo/bar", "baseURL": "https://example.com" }], |
| "expected_match": { |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" } }, |
| "pathname": { "input": "/foo/bar", "groups": {} }, |
| "protocol": { "input": "https", "groups": { "0": "https" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "/foo/bar/baz", |
| "baseURL": "https://example.com" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "hostname": "example.com", "pathname": "/foo/bar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "protocol": "https", "hostname": "example.com", |
| "pathname": "/foo/bar" }], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com" }], |
| "inputs": [{ "protocol": "https", "hostname": "example.com", |
| "pathname": "/foo/bar" }], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_match": { |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo/bar", "groups": {} }, |
| "protocol": { "input": "https", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com" }], |
| "inputs": [{ "protocol": "https", "hostname": "example.com", |
| "pathname": "/foo/bar/baz" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "protocol": "https", "hostname": "example.com", |
| "pathname": "/foo/bar", "search": "otherquery", |
| "hash": "otherhash" }], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com" }], |
| "inputs": [{ "protocol": "https", "hostname": "example.com", |
| "pathname": "/foo/bar", "search": "otherquery", |
| "hash": "otherhash" }], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?otherquery#otherhash" }], |
| "inputs": [{ "protocol": "https", "hostname": "example.com", |
| "pathname": "/foo/bar", "search": "otherquery", |
| "hash": "otherhash" }], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": { |
| "hash": { "input": "otherhash", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo/bar", "groups": {} }, |
| "protocol": { "input": "https", "groups": {} }, |
| "search": { "input": "otherquery", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [ "https://example.com/foo/bar" ], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [ "https://example.com/foo/bar?otherquery#otherhash" ], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [ "https://example.com/foo/bar?query#hash" ], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": { |
| "hash": { "input": "hash", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo/bar", "groups": {} }, |
| "protocol": { "input": "https", "groups": {} }, |
| "search": { "input": "query", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [ "https://example.com/foo/bar/baz" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [ "https://other.com/foo/bar" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [ "http://other.com/foo/bar" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "pathname": "/foo/bar", "baseURL": "https://example.com" }], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_match": { |
| "hash": { "input": "hash", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo/bar", "groups": {} }, |
| "protocol": { "input": "https", "groups": {} }, |
| "search": { "input": "query", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "pathname": "/foo/bar/baz", |
| "baseURL": "https://example.com" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "pathname": "/foo/bar", "baseURL": "https://other.com" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar", |
| "baseURL": "https://example.com?query#hash" }], |
| "inputs": [{ "pathname": "/foo/bar", "baseURL": "http://example.com" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/([^\\/]+?)" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar" }], |
| "inputs": [{ "pathname": "/foo/index.html" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/index.html", "groups": { "bar": "index.html" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar" }], |
| "inputs": [{ "pathname": "/foo/bar/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_obj": { |
| "pathname": "/foo/*" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_obj": { |
| "pathname": "/foo/*" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_obj": { |
| "pathname": "/foo/*" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_obj": { |
| "pathname": "/foo/*" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar(.*)" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar(.*)" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "bar": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar(.*)" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "bar": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar(.*)" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar?" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar?" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "bar": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar?" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar?" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar?" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar+" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar+" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "bar": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar+" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar+" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar+" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar*" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "bar": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar*" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "bar": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar*" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "bar": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar*" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/:bar*" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)?" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_obj": { |
| "pathname": "/foo/*?" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*?" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)?" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_obj": { |
| "pathname": "/foo/*?" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*?" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)?" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_obj": { |
| "pathname": "/foo/*?" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*?" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)?" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_obj": { |
| "pathname": "/foo/*?" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*?" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)?" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_obj": { |
| "pathname": "/foo/*?" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*?" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)?" }], |
| "inputs": [{ "pathname": "/fo" }], |
| "expected_obj": { |
| "pathname": "/foo/*?" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*?" }], |
| "inputs": [{ "pathname": "/fo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)+" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_obj": { |
| "pathname": "/foo/*+" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*+" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)+" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_obj": { |
| "pathname": "/foo/*+" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*+" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)+" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_obj": { |
| "pathname": "/foo/*+" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*+" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)+" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_obj": { |
| "pathname": "/foo/*+" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*+" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)+" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_obj": { |
| "pathname": "/foo/*+" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*+" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)+" }], |
| "inputs": [{ "pathname": "/fo" }], |
| "expected_obj": { |
| "pathname": "/foo/*+" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/*+" }], |
| "inputs": [{ "pathname": "/fo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)*" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_obj": { |
| "pathname": "/foo/**" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/**" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": { "0": "bar" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)*" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_obj": { |
| "pathname": "/foo/**" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/**" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/baz", "groups": { "0": "bar/baz" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)*" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_obj": { |
| "pathname": "/foo/**" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/**" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)*" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_obj": { |
| "pathname": "/foo/**" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/**" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/", "groups": { "0": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)*" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_obj": { |
| "pathname": "/foo/**" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/**" }], |
| "inputs": [{ "pathname": "/foobar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/(.*)*" }], |
| "inputs": [{ "pathname": "/fo" }], |
| "expected_obj": { |
| "pathname": "/foo/**" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/**" }], |
| "inputs": [{ "pathname": "/fo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_obj": { |
| "pathname": "/foo/bar" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_obj": { |
| "pathname": "/foo/bar" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_obj": { |
| "pathname": "/foo/bar" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_obj": { |
| "pathname": "/foo/bar" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}?" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}?" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}?" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}?" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}+" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}+" }], |
| "inputs": [{ "pathname": "/foo/bar/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}+" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}+" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}+" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}*" }], |
| "inputs": [{ "pathname": "/foo/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}*" }], |
| "inputs": [{ "pathname": "/foo/bar/bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}*" }], |
| "inputs": [{ "pathname": "/foo/bar/baz" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}*" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo{/bar}*" }], |
| "inputs": [{ "pathname": "/foo/" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "protocol": "(café)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "username": "(café)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "password": "(café)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "(café)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "pathname": "(café)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "search": "(café)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hash": "(café)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "protocol": ":café" }], |
| "inputs": [{ "protocol": "foo" }], |
| "expected_match": { |
| "protocol": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "username": ":café" }], |
| "inputs": [{ "username": "foo" }], |
| "expected_match": { |
| "username": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "password": ":café" }], |
| "inputs": [{ "password": "foo" }], |
| "expected_match": { |
| "password": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "hostname": ":café" }], |
| "inputs": [{ "hostname": "foo" }], |
| "expected_match": { |
| "hostname": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/:café" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "search": ":café" }], |
| "inputs": [{ "search": "foo" }], |
| "expected_match": { |
| "search": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "hash": ":café" }], |
| "inputs": [{ "hash": "foo" }], |
| "expected_match": { |
| "hash": { "input": "foo", "groups": { "café": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "protocol": ":\u2118" }], |
| "inputs": [{ "protocol": "foo" }], |
| "expected_match": { |
| "protocol": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "username": ":\u2118" }], |
| "inputs": [{ "username": "foo" }], |
| "expected_match": { |
| "username": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "password": ":\u2118" }], |
| "inputs": [{ "password": "foo" }], |
| "expected_match": { |
| "password": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "hostname": ":\u2118" }], |
| "inputs": [{ "hostname": "foo" }], |
| "expected_match": { |
| "hostname": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/:\u2118" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "search": ":\u2118" }], |
| "inputs": [{ "search": "foo" }], |
| "expected_match": { |
| "search": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "hash": ":\u2118" }], |
| "inputs": [{ "hash": "foo" }], |
| "expected_match": { |
| "hash": { "input": "foo", "groups": { "\u2118": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "protocol": ":\u3400" }], |
| "inputs": [{ "protocol": "foo" }], |
| "expected_match": { |
| "protocol": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "username": ":\u3400" }], |
| "inputs": [{ "username": "foo" }], |
| "expected_match": { |
| "username": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "password": ":\u3400" }], |
| "inputs": [{ "password": "foo" }], |
| "expected_match": { |
| "password": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "hostname": ":\u3400" }], |
| "inputs": [{ "hostname": "foo" }], |
| "expected_match": { |
| "hostname": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/:\u3400" }], |
| "inputs": [{ "pathname": "/foo" }], |
| "expected_match": { |
| "pathname": { "input": "/foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "search": ":\u3400" }], |
| "inputs": [{ "search": "foo" }], |
| "expected_match": { |
| "search": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "hash": ":\u3400" }], |
| "inputs": [{ "hash": "foo" }], |
| "expected_match": { |
| "hash": { "input": "foo", "groups": { "\u3400": "foo" } } |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "(.*)" }], |
| "inputs": [{ "protocol" : "café" }], |
| "expected_obj": { |
| "protocol": "*" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "protocol": "(.*)" }], |
| "inputs": [{ "protocol": "cafe" }], |
| "expected_obj": { |
| "protocol": "*" |
| }, |
| "expected_match": { |
| "protocol": { "input": "cafe", "groups": { "0": "cafe" }} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "foo-bar" }], |
| "inputs": [{ "protocol": "foo-bar" }], |
| "expected_match": { |
| "protocol": { "input": "foo-bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "username": "caf%C3%A9" }], |
| "inputs": [{ "username" : "café" }], |
| "expected_match": { |
| "username": { "input": "caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "username": "café" }], |
| "inputs": [{ "username" : "café" }], |
| "expected_obj": { |
| "username": "caf%C3%A9" |
| }, |
| "expected_match": { |
| "username": { "input": "caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "username": "caf%c3%a9" }], |
| "inputs": [{ "username" : "café" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "password": "caf%C3%A9" }], |
| "inputs": [{ "password" : "café" }], |
| "expected_match": { |
| "password": { "input": "caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "password": "café" }], |
| "inputs": [{ "password" : "café" }], |
| "expected_obj": { |
| "password": "caf%C3%A9" |
| }, |
| "expected_match": { |
| "password": { "input": "caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "password": "caf%c3%a9" }], |
| "inputs": [{ "password" : "café" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "hostname": "xn--caf-dma.com" }], |
| "inputs": [{ "hostname" : "café.com" }], |
| "expected_match": { |
| "hostname": { "input": "xn--caf-dma.com", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "hostname": "café.com" }], |
| "inputs": [{ "hostname" : "café.com" }], |
| "expected_obj": { |
| "hostname": "xn--caf-dma.com" |
| }, |
| "expected_match": { |
| "hostname": { "input": "xn--caf-dma.com", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "port": "" }], |
| "inputs": [{ "protocol": "http", "port": "80" }], |
| "exactly_empty_components": [ "port" ], |
| "expected_match": { |
| "protocol": { "input": "http", "groups": { "0": "http" }} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "http", "port": "80" }], |
| "inputs": [{ "protocol": "http", "port": "80" }], |
| "exactly_empty_components": [ "port" ], |
| "expected_match": { |
| "protocol": { "input": "http", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "http", "port": "80{20}?" }], |
| "inputs": [{ "protocol": "http", "port": "80" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "protocol": "http", "port": "80 " }], |
| "inputs": [{ "protocol": "http", "port": "80" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "port": "80" }], |
| "inputs": [{ "protocol": "http", "port": "80" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "protocol": "http{s}?", "port": "80" }], |
| "inputs": [{ "protocol": "http", "port": "80" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "port": "80" }], |
| "inputs": [{ "port": "80" }], |
| "expected_match": { |
| "port": { "input": "80", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "port": "(.*)" }], |
| "inputs": [{ "port": "invalid80" }], |
| "expected_obj": { |
| "port": "*" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "/foo/./bar" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/bar", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/baz" }], |
| "inputs": [{ "pathname": "/foo/bar/../baz" }], |
| "expected_match": { |
| "pathname": { "input": "/foo/baz", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/caf%C3%A9" }], |
| "inputs": [{ "pathname": "/café" }], |
| "expected_match": { |
| "pathname": { "input": "/caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/café" }], |
| "inputs": [{ "pathname": "/café" }], |
| "expected_obj": { |
| "pathname": "/caf%C3%A9" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/caf%c3%a9" }], |
| "inputs": [{ "pathname": "/café" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "foo/bar" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [{ "pathname": "foo/bar", "baseURL": "https://example.com" }], |
| "expected_match": { |
| "protocol": { "input": "https", "groups": { "0": "https" }}, |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" }}, |
| "pathname": { "input": "/foo/bar", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/../bar" }], |
| "inputs": [{ "pathname": "/bar" }], |
| "expected_obj": { |
| "pathname": "/bar" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/bar", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "./foo/bar", "baseURL": "https://example.com" }], |
| "inputs": [{ "pathname": "foo/bar", "baseURL": "https://example.com" }], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "pathname": "/foo/bar" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {}}, |
| "hostname": { "input": "example.com", "groups": {}}, |
| "pathname": { "input": "/foo/bar", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "", "baseURL": "https://example.com" }], |
| "inputs": [{ "pathname": "/", "baseURL": "https://example.com" }], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {}}, |
| "hostname": { "input": "example.com", "groups": {}}, |
| "pathname": { "input": "/", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{/bar}", "baseURL": "https://example.com/foo/" }], |
| "inputs": [{ "pathname": "./bar", "baseURL": "https://example.com/foo/" }], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "pathname": "/bar" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "\\/bar", "baseURL": "https://example.com/foo/" }], |
| "inputs": [{ "pathname": "./bar", "baseURL": "https://example.com/foo/" }], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "pathname": "/bar" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "b", "baseURL": "https://example.com/foo/" }], |
| "inputs": [{ "pathname": "./b", "baseURL": "https://example.com/foo/" }], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "pathname": "/foo/b" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {}}, |
| "hostname": { "input": "example.com", "groups": {}}, |
| "pathname": { "input": "/foo/b", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "foo/bar" }], |
| "inputs": [ "https://example.com/foo/bar" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "foo/bar", "baseURL": "https://example.com" }], |
| "inputs": [ "https://example.com/foo/bar" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "pathname": "/foo/bar" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {}}, |
| "hostname": { "input": "example.com", "groups": {}}, |
| "pathname": { "input": "/foo/bar", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": ":name.html", "baseURL": "https://example.com" }], |
| "inputs": [ "https://example.com/foo.html"] , |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "pathname": "/:name.html" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {}}, |
| "hostname": { "input": "example.com", "groups": {}}, |
| "pathname": { "input": "/foo.html", "groups": { "name": "foo" }} |
| } |
| }, |
| { |
| "pattern": [{ "search": "q=caf%C3%A9" }], |
| "inputs": [{ "search": "q=café" }], |
| "expected_match": { |
| "search": { "input": "q=caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "search": "q=café" }], |
| "inputs": [{ "search": "q=café" }], |
| "expected_obj": { |
| "search": "q=caf%C3%A9" |
| }, |
| "expected_match": { |
| "search": { "input": "q=caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "search": "q=caf%c3%a9" }], |
| "inputs": [{ "search": "q=café" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "hash": "caf%C3%A9" }], |
| "inputs": [{ "hash": "café" }], |
| "expected_match": { |
| "hash": { "input": "caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "hash": "café" }], |
| "inputs": [{ "hash": "café" }], |
| "expected_obj": { |
| "hash": "caf%C3%A9" |
| }, |
| "expected_match": { |
| "hash": { "input": "caf%C3%A9", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "hash": "caf%c3%a9" }], |
| "inputs": [{ "hash": "café" }], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "protocol": "about", "pathname": "(blank|sourcedoc)" }], |
| "inputs": [ "about:blank" ], |
| "expected_match": { |
| "protocol": { "input": "about", "groups": {}}, |
| "pathname": { "input": "blank", "groups": { "0": "blank" }} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "data", "pathname": ":number([0-9]+)" }], |
| "inputs": [ "data:8675309" ], |
| "expected_match": { |
| "protocol": { "input": "data", "groups": {}}, |
| "pathname": { "input": "8675309", "groups": { "number": "8675309" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/(\\m)" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "pathname": "/foo!" }], |
| "inputs": [{ "pathname": "/foo!" }], |
| "expected_match": { |
| "pathname": { "input": "/foo!", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo\\:" }], |
| "inputs": [{ "pathname": "/foo:" }], |
| "expected_match": { |
| "pathname": { "input": "/foo:", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo\\{" }], |
| "inputs": [{ "pathname": "/foo{" }], |
| "expected_obj": { |
| "pathname": "/foo%7B" |
| }, |
| "expected_match": { |
| "pathname": { "input": "/foo%7B", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo\\(" }], |
| "inputs": [{ "pathname": "/foo(" }], |
| "expected_match": { |
| "pathname": { "input": "/foo(", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "javascript", "pathname": "var x = 1;" }], |
| "inputs": [{ "protocol": "javascript", "pathname": "var x = 1;" }], |
| "expected_match": { |
| "protocol": { "input": "javascript", "groups": {}}, |
| "pathname": { "input": "var x = 1;", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "var x = 1;" }], |
| "inputs": [{ "protocol": "javascript", "pathname": "var x = 1;" }], |
| "expected_obj": { |
| "pathname": "var%20x%20=%201;" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "protocol": "javascript", "pathname": "var x = 1;" }], |
| "inputs": [{ "baseURL": "javascript:var x = 1;" }], |
| "expected_match": { |
| "protocol": { "input": "javascript", "groups": {}}, |
| "pathname": { "input": "var x = 1;", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "(data|javascript)", "pathname": "var x = 1;" }], |
| "inputs": [{ "protocol": "javascript", "pathname": "var x = 1;" }], |
| "expected_match": { |
| "protocol": { "input": "javascript", "groups": {"0": "javascript"}}, |
| "pathname": { "input": "var x = 1;", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "(https|javascript)", "pathname": "var x = 1;" }], |
| "inputs": [{ "protocol": "javascript", "pathname": "var x = 1;" }], |
| "expected_obj": { |
| "pathname": "var%20x%20=%201;" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "var x = 1;" }], |
| "inputs": [{ "pathname": "var x = 1;" }], |
| "expected_obj": { |
| "pathname": "var%20x%20=%201;" |
| }, |
| "expected_match": { |
| "pathname": { "input": "var%20x%20=%201;", "groups": {}} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [ "./foo/bar", "https://example.com" ], |
| "expected_match": { |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" } }, |
| "pathname": { "input": "/foo/bar", "groups": {} }, |
| "protocol": { "input": "https", "groups": { "0": "https" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/foo/bar" }], |
| "inputs": [ { "pathname": "/foo/bar" }, "https://example.com" ], |
| "expected_match": "error" |
| }, |
| { |
| "pattern": [ "https://example.com:8080/foo?bar#baz" ], |
| "inputs": [{ "pathname": "/foo", "search": "bar", "hash": "baz", |
| "baseURL": "https://example.com:8080" }], |
| "exactly_empty_components": [ "username", "password" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "port": "8080", |
| "pathname": "/foo", |
| "search": "bar", |
| "hash": "baz" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "port": { "input": "8080", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} }, |
| "search": { "input": "bar", "groups": {} }, |
| "hash": { "input": "baz", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "/foo?bar#baz", "https://example.com:8080" ], |
| "inputs": [{ "pathname": "/foo", "search": "bar", "hash": "baz", |
| "baseURL": "https://example.com:8080" }], |
| "exactly_empty_components": [ "username", "password" ], |
| "expected_obj": { |
| "pathname": "/foo", |
| "search": "bar", |
| "hash": "baz" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "port": { "input": "8080", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} }, |
| "search": { "input": "bar", "groups": {} }, |
| "hash": { "input": "baz", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "/foo" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "example.com/foo" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "http{s}?://{*.}?example.com/:product/:endpoint" ], |
| "inputs": [ "https://sub.example.com/foo/bar" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "http{s}?", |
| "hostname": "{*.}?example.com", |
| "pathname": "/:product/:endpoint" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "sub.example.com", "groups": { "0": "sub" } }, |
| "pathname": { "input": "/foo/bar", "groups": { "product": "foo", |
| "endpoint": "bar" } } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com?foo" ], |
| "inputs": [ "https://example.com/?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/", |
| "search": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} }, |
| "search": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com#foo" ], |
| "inputs": [ "https://example.com/#foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/", |
| "hash": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} }, |
| "hash": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com:8080?foo" ], |
| "inputs": [ "https://example.com:8080/?foo" ], |
| "exactly_empty_components": [ "username", "password", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "port": "8080", |
| "pathname": "/", |
| "search": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "port": { "input": "8080", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} }, |
| "search": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com:8080#foo" ], |
| "inputs": [ "https://example.com:8080/#foo" ], |
| "exactly_empty_components": [ "username", "password", "search" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "port": "8080", |
| "pathname": "/", |
| "hash": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "port": { "input": "8080", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} }, |
| "hash": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com/?foo" ], |
| "inputs": [ "https://example.com/?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/", |
| "search": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} }, |
| "search": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com/#foo" ], |
| "inputs": [ "https://example.com/#foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/", |
| "hash": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} }, |
| "hash": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com/*?foo" ], |
| "inputs": [ "https://example.com/?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/*?foo" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "https://example.com/*\\?foo" ], |
| "inputs": [ "https://example.com/?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/*", |
| "search": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": { "0": "" } }, |
| "search": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com/:name?foo" ], |
| "inputs": [ "https://example.com/bar?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/:name?foo" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "https://example.com/:name\\?foo" ], |
| "inputs": [ "https://example.com/bar?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/:name", |
| "search": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/bar", "groups": { "name": "bar" } }, |
| "search": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com/(bar)?foo" ], |
| "inputs": [ "https://example.com/bar?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/(bar)?foo" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "https://example.com/(bar)\\?foo" ], |
| "inputs": [ "https://example.com/bar?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/(bar)", |
| "search": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/bar", "groups": { "0": "bar" } }, |
| "search": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com/{bar}?foo" ], |
| "inputs": [ "https://example.com/bar?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/{bar}?foo" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "https://example.com/{bar}\\?foo" ], |
| "inputs": [ "https://example.com/bar?foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/bar", |
| "search": "foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/bar", "groups": {} }, |
| "search": { "input": "foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://example.com/" ], |
| "inputs": [ "https://example.com:8080/" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "port": "", |
| "pathname": "/" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "data:foobar" ], |
| "inputs": [ "data:foobar" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "data\\:foobar" ], |
| "inputs": [ "data:foobar" ], |
| "exactly_empty_components": [ "username", "password", "hostname", "port", |
| "search", "hash" ], |
| "expected_obj": { |
| "protocol": "data", |
| "pathname": "foobar" |
| }, |
| "expected_match": { |
| "protocol": { "input": "data", "groups": {} }, |
| "pathname": { "input": "foobar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://{sub.}?example.com/foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "{sub.}?example.com", |
| "pathname": "/foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://{sub.}?example{.com/}foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "{https://}example.com/foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "https://(sub.)?example.com/foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "(sub.)?example.com", |
| "pathname": "/foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": { "0": "" } }, |
| "pathname": { "input": "/foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://(sub.)?example(.com/)foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "(sub.)?example(.com/)foo", |
| "pathname": "/" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "(https://)example.com/foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "https://{sub{.}}example.com/foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "https://(sub(?:.))?example.com/foo" ], |
| "inputs": [ "https://example.com/foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "(sub(?:.))?example.com", |
| "pathname": "/foo" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": { "0": "" } }, |
| "pathname": { "input": "/foo", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "file:///foo/bar" ], |
| "inputs": [ "file:///foo/bar" ], |
| "exactly_empty_components": [ "username", "password", "hostname", "port", |
| "search", "hash" ], |
| "expected_obj": { |
| "protocol": "file", |
| "pathname": "/foo/bar" |
| }, |
| "expected_match": { |
| "protocol": { "input": "file", "groups": {} }, |
| "pathname": { "input": "/foo/bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "data:" ], |
| "inputs": [ "data:" ], |
| "exactly_empty_components": [ "username", "password", "hostname", "port", |
| "pathname", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "data" |
| }, |
| "expected_match": { |
| "protocol": { "input": "data", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "foo://bar" ], |
| "inputs": [ "foo://bad_url_browser_interop" ], |
| "exactly_empty_components": [ "username", "password", "port", "pathname", |
| "search", "hash" ], |
| "expected_obj": { |
| "protocol": "foo", |
| "hostname": "bar" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "(café)://foo" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "https://example.com/foo?bar#baz" ], |
| "inputs": [{ "protocol": "https:", |
| "search": "?bar", |
| "hash": "#baz", |
| "baseURL": "http://example.com/foo" }], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/foo", |
| "search": "bar", |
| "hash": "baz" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} }, |
| "search": { "input": "bar", "groups": {} }, |
| "hash": { "input": "baz", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "protocol": "http{s}?:", |
| "search": "?bar", |
| "hash": "#baz" }], |
| "inputs": [ "http://example.com/foo?bar#baz" ], |
| "expected_obj": { |
| "protocol": "http{s}?", |
| "search": "bar", |
| "hash": "baz" |
| }, |
| "expected_match": { |
| "protocol": { "input": "http", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" }}, |
| "pathname": { "input": "/foo", "groups": { "0": "/foo" }}, |
| "search": { "input": "bar", "groups": {} }, |
| "hash": { "input": "baz", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "?bar#baz", "https://example.com/foo" ], |
| "inputs": [ "?bar#baz", "https://example.com/foo" ], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/foo", |
| "search": "bar", |
| "hash": "baz" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} }, |
| "search": { "input": "bar", "groups": {} }, |
| "hash": { "input": "baz", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "?bar", "https://example.com/foo#baz" ], |
| "inputs": [ "?bar", "https://example.com/foo#snafu" ], |
| "exactly_empty_components": [ "username", "password", "port", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/foo", |
| "search": "bar" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} }, |
| "search": { "input": "bar", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "#baz", "https://example.com/foo?bar" ], |
| "inputs": [ "#baz", "https://example.com/foo?bar" ], |
| "exactly_empty_components": [ "username", "password", "port" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/foo", |
| "search": "bar", |
| "hash": "baz" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} }, |
| "search": { "input": "bar", "groups": {} }, |
| "hash": { "input": "baz", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "#baz", "https://example.com/foo" ], |
| "inputs": [ "#baz", "https://example.com/foo" ], |
| "exactly_empty_components": [ "username", "password", "port", "search" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/foo", |
| "hash": "baz" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/foo", "groups": {} }, |
| "hash": { "input": "baz", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "*" }], |
| "inputs": [ "foo", "data:data-urls-cannot-be-base-urls" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "*" }], |
| "inputs": [ "foo", "not|a|valid|url" ], |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "https://foo\\:bar@example.com" ], |
| "inputs": [ "https://foo:bar@example.com" ], |
| "exactly_empty_components": [ "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "username": "foo", |
| "password": "bar", |
| "hostname": "example.com", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "username": { "input": "foo", "groups": {} }, |
| "password": { "input": "bar", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://foo@example.com" ], |
| "inputs": [ "https://foo@example.com" ], |
| "exactly_empty_components": [ "password", "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "username": "foo", |
| "hostname": "example.com", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "username": { "input": "foo", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://\\:bar@example.com" ], |
| "inputs": [ "https://:bar@example.com" ], |
| "exactly_empty_components": [ "username", "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "password": "bar", |
| "hostname": "example.com", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "password": { "input": "bar", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://:user::pass@example.com" ], |
| "inputs": [ "https://foo:bar@example.com" ], |
| "exactly_empty_components": [ "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "username": ":user", |
| "password": ":pass", |
| "hostname": "example.com", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "username": { "input": "foo", "groups": { "user": "foo" } }, |
| "password": { "input": "bar", "groups": { "pass": "bar" } }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https\\:foo\\:bar@example.com" ], |
| "inputs": [ "https:foo:bar@example.com" ], |
| "exactly_empty_components": [ "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "username": "foo", |
| "password": "bar", |
| "hostname": "example.com", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "username": { "input": "foo", "groups": {} }, |
| "password": { "input": "bar", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "data\\:foo\\:bar@example.com" ], |
| "inputs": [ "data:foo:bar@example.com" ], |
| "exactly_empty_components": [ "username", "password", "hostname", "port", |
| "search", "hash" ], |
| "expected_obj": { |
| "protocol": "data", |
| "pathname": "foo\\:bar@example.com" |
| }, |
| "expected_match": { |
| "protocol": { "input": "data", "groups": {} }, |
| "pathname": { "input": "foo:bar@example.com", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "https://foo{\\:}bar@example.com" ], |
| "inputs": [ "https://foo:bar@example.com" ], |
| "exactly_empty_components": [ "password", "port", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "username": "foo%3Abar", |
| "hostname": "example.com", |
| "pathname": "/" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [ "data{\\:}channel.html", "https://example.com" ], |
| "inputs": [ "https://example.com/data:channel.html" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "https", |
| "hostname": "example.com", |
| "pathname": "/data\\:channel.html" |
| }, |
| "expected_match": { |
| "protocol": { "input": "https", "groups": {} }, |
| "hostname": { "input": "example.com", "groups": {} }, |
| "pathname": { "input": "/data:channel.html", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "http://[\\:\\:1]/" ], |
| "inputs": [ "http://[::1]/" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "http", |
| "hostname": "[\\:\\:1]", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "http", "groups": {} }, |
| "hostname": { "input": "[::1]", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "http://[\\:\\:1]:8080/" ], |
| "inputs": [ "http://[::1]:8080/" ], |
| "exactly_empty_components": [ "username", "password", "search", "hash" ], |
| "expected_obj": { |
| "protocol": "http", |
| "hostname": "[\\:\\:1]", |
| "port": "8080", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "http", "groups": {} }, |
| "hostname": { "input": "[::1]", "groups": {} }, |
| "port": { "input": "8080", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "http://[\\:\\:a]/" ], |
| "inputs": [ "http://[::a]/" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "http", |
| "hostname": "[\\:\\:a]", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "http", "groups": {} }, |
| "hostname": { "input": "[::a]", "groups": {} }, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "http://[:address]/" ], |
| "inputs": [ "http://[::1]/" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "http", |
| "hostname": "[:address]", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "http", "groups": {} }, |
| "hostname": { "input": "[::1]", "groups": { "address": "::1" }}, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [ "http://[\\:\\:AB\\::num]/" ], |
| "inputs": [ "http://[::ab:1]/" ], |
| "exactly_empty_components": [ "username", "password", "port", "search", |
| "hash" ], |
| "expected_obj": { |
| "protocol": "http", |
| "hostname": "[\\:\\:ab\\::num]", |
| "pathname": "/" |
| }, |
| "expected_match": { |
| "protocol": { "input": "http", "groups": {} }, |
| "hostname": { "input": "[::ab:1]", "groups": { "num": "1" }}, |
| "pathname": { "input": "/", "groups": {} } |
| } |
| }, |
| { |
| "pattern": [{ "hostname": "[\\:\\:AB\\::num]" }], |
| "inputs": [{ "hostname": "[::ab:1]" }], |
| "expected_obj": { |
| "hostname": "[\\:\\:ab\\::num]" |
| }, |
| "expected_match": { |
| "hostname": { "input": "[::ab:1]", "groups": { "num": "1" }} |
| } |
| }, |
| { |
| "pattern": [{ "hostname": "[\\:\\:xY\\::num]" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "{[\\:\\:ab\\::num]}" }], |
| "inputs": [{ "hostname": "[::ab:1]" }], |
| "expected_match": { |
| "hostname": { "input": "[::ab:1]", "groups": { "num": "1" }} |
| } |
| }, |
| { |
| "pattern": [{ "hostname": "{[\\:\\:fé\\::num]}" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "{[\\:\\::num\\:1]}" }], |
| "inputs": [{ "hostname": "[::ab:1]" }], |
| "expected_match": { |
| "hostname": { "input": "[::ab:1]", "groups": { "num": "ab" }} |
| } |
| }, |
| { |
| "pattern": [{ "hostname": "{[\\:\\::num\\:fé]}" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "[*\\:1]" }], |
| "inputs": [{ "hostname": "[::ab:1]" }], |
| "expected_match": { |
| "hostname": { "input": "[::ab:1]", "groups": { "0": "::ab" }} |
| } |
| }, |
| { |
| "pattern": [{ "hostname": "*\\:1]" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "https://foo{{@}}example.com" ], |
| "inputs": [ "https://foo@example.com" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "https://foo{@example.com" ], |
| "inputs": [ "https://foo@example.com" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "data\\:text/javascript,let x = 100/:tens?5;" ], |
| "inputs": [ "data:text/javascript,let x = 100/5;" ], |
| "exactly_empty_components": [ "username", "password", "hostname", "port", |
| "search", "hash" ], |
| "expected_obj": { |
| "protocol": "data", |
| "pathname": "text/javascript,let x = 100/:tens?5;" |
| }, |
| "expected_match": { |
| "protocol": { "input": "data", "groups": {} }, |
| "pathname": { "input": "text/javascript,let x = 100/5;", "groups": { "tens": "" } } |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "/:id/:id" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "pathname": "/foo", "baseURL": "" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [ "/foo", "" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "pathname": "/foo" }, "https://example.com" ], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "pathname": ":name*" }], |
| "inputs": [{ "pathname": "foobar" }], |
| "expected_match": { |
| "pathname": { "input": "foobar", "groups": { "name": "foobar" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": ":name+" }], |
| "inputs": [{ "pathname": "foobar" }], |
| "expected_match": { |
| "pathname": { "input": "foobar", "groups": { "name": "foobar" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": ":name" }], |
| "inputs": [{ "pathname": "foobar" }], |
| "expected_match": { |
| "pathname": { "input": "foobar", "groups": { "name": "foobar" }} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": ":name*" }], |
| "inputs": [{ "protocol": "foobar" }], |
| "expected_match": { |
| "protocol": { "input": "foobar", "groups": { "name": "foobar" }} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": ":name+" }], |
| "inputs": [{ "protocol": "foobar" }], |
| "expected_match": { |
| "protocol": { "input": "foobar", "groups": { "name": "foobar" }} |
| } |
| }, |
| { |
| "pattern": [{ "protocol": ":name" }], |
| "inputs": [{ "protocol": "foobar" }], |
| "expected_match": { |
| "protocol": { "input": "foobar", "groups": { "name": "foobar" }} |
| } |
| }, |
| { |
| "pattern": [{ "hostname": "bad hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad#hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad%hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad/hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad\\:hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad<hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad>hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad?hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad@hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad[hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad]hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad\\\\hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad^hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad|hostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad\nhostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad\rhostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{ "hostname": "bad\thostname" }], |
| "expected_obj": "error" |
| }, |
| { |
| "pattern": [{}], |
| "inputs": ["https://example.com/"], |
| "expected_match": { |
| "protocol": { "input": "https", "groups": { "0": "https" }}, |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" }}, |
| "pathname": { "input": "/", "groups": { "0": "/" }} |
| } |
| }, |
| { |
| "pattern": [], |
| "inputs": ["https://example.com/"], |
| "expected_match": { |
| "protocol": { "input": "https", "groups": { "0": "https" }}, |
| "hostname": { "input": "example.com", "groups": { "0": "example.com" }}, |
| "pathname": { "input": "/", "groups": { "0": "/" }} |
| } |
| }, |
| { |
| "pattern": [], |
| "inputs": [{}], |
| "expected_match": {} |
| }, |
| { |
| "pattern": [], |
| "inputs": [], |
| "expected_match": { "inputs": [{}] } |
| }, |
| { |
| "pattern": [{ "pathname": "(foo)(.*)" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "0": "foo", "1": "barbaz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{(foo)bar}(.*)" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "0": "foo", "1": "baz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "(foo)?(.*)" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_obj": { |
| "pathname": "(foo)?*" |
| }, |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "0": "foo", "1": "barbaz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}(.*)" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "foo": "f", "0": "oobarbaz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}(barbaz)" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "foo": "foo", "0": "barbaz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}{(.*)}" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_obj": { |
| "pathname": "{:foo}(.*)" |
| }, |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "foo": "f", "0": "oobarbaz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}{(.*)bar}" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_obj": { |
| "pathname": ":foo{(.*)bar}" |
| }, |
| "expected_match": null |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}{bar(.*)}" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_obj": { |
| "pathname": ":foo{bar(.*)}" |
| }, |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "foo": "foo", "0": "baz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}:bar(.*)" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_obj": { |
| "pathname": ":foo:bar(.*)" |
| }, |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "foo": "f", "bar": "oobarbaz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}?(.*)" }], |
| "inputs": [{ "pathname": "foobarbaz" }], |
| "expected_obj": { |
| "pathname": ":foo?*" |
| }, |
| "expected_match": { |
| "pathname": { "input": "foobarbaz", "groups": { "foo": "f", "0": "oobarbaz" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo\\bar}" }], |
| "inputs": [{ "pathname": "foobar" }], |
| "expected_match": { |
| "pathname": { "input": "foobar", "groups": { "foo": "foo" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo\\.bar}" }], |
| "inputs": [{ "pathname": "foo.bar" }], |
| "expected_obj": { |
| "pathname": "{:foo.bar}" |
| }, |
| "expected_match": { |
| "pathname": { "input": "foo.bar", "groups": { "foo": "foo" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo(foo)bar}" }], |
| "inputs": [{ "pathname": "foobar" }], |
| "expected_match": { |
| "pathname": { "input": "foobar", "groups": { "foo": "foo" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": "{:foo}bar" }], |
| "inputs": [{ "pathname": "foobar" }], |
| "expected_match": { |
| "pathname": { "input": "foobar", "groups": { "foo": "foo" }} |
| } |
| }, |
| { |
| "pattern": [{ "pathname": ":foo\\bar" }], |
| "inputs": [{ "pathname": "foobar" }], |
| "expected_obj": { |
| "pathname": "{:foo}bar" |
| }, |
| "expected_match": { |
| "pathname": { "input": "foobar", "groups": { "foo": "foo" }} |
| } |
| } |
| ] |