mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-23 13:45:04 +02:00
Fix path interpretion in URL parser
The URL parser incorrectly used to interpret the path "/" as a path "/" instead of as empty. Test cases were added. refs #9470
This commit is contained in:
parent
33b273f3d9
commit
65227e311b
@ -48,7 +48,6 @@ Url::Url(const String& base_url)
|
|||||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid URL: '/' expected after scheme."));
|
BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid URL: '/' expected after scheme."));
|
||||||
|
|
||||||
if (url.GetLength() == 1) {
|
if (url.GetLength() == 1) {
|
||||||
m_Path.push_back("/");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,9 @@ BOOST_AUTO_TEST_CASE(format)
|
|||||||
|
|
||||||
url = new Url("/foo/bar/index.php?blaka");
|
url = new Url("/foo/bar/index.php?blaka");
|
||||||
BOOST_CHECK(new Url(url->Format()));
|
BOOST_CHECK(new Url(url->Format()));
|
||||||
|
|
||||||
|
url = new Url("/");
|
||||||
|
BOOST_CHECK(url->Format() == "/");
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(illegal_legal_strings)
|
BOOST_AUTO_TEST_CASE(illegal_legal_strings)
|
||||||
@ -72,6 +75,7 @@ BOOST_AUTO_TEST_CASE(illegal_legal_strings)
|
|||||||
BOOST_CHECK_THROW(new Url("/?]=gar"), std::invalid_argument);
|
BOOST_CHECK_THROW(new Url("/?]=gar"), std::invalid_argument);
|
||||||
BOOST_CHECK(new Url("/?foo=baz??&\?\?=/?")); //Valid
|
BOOST_CHECK(new Url("/?foo=baz??&\?\?=/?")); //Valid
|
||||||
BOOST_CHECK_THROW(new Url("/?foo=bar&foo=ba"), std::invalid_argument);
|
BOOST_CHECK_THROW(new Url("/?foo=bar&foo=ba"), std::invalid_argument);
|
||||||
|
BOOST_CHECK(new Url("/"));
|
||||||
BOOST_CHECK_THROW(new Url("/?foo=bar&[]=d"), std::invalid_argument);
|
BOOST_CHECK_THROW(new Url("/?foo=bar&[]=d"), std::invalid_argument);
|
||||||
BOOST_CHECK_THROW(new Url("/?fo=&bar=garOA"), std::invalid_argument);
|
BOOST_CHECK_THROW(new Url("/?fo=&bar=garOA"), std::invalid_argument);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user