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:
Jean-Marcel Flach 2015-07-08 13:08:02 +02:00
parent 33b273f3d9
commit 65227e311b
2 changed files with 4 additions and 1 deletions

View File

@ -48,7 +48,6 @@ Url::Url(const String& base_url)
BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid URL: '/' expected after scheme."));
if (url.GetLength() == 1) {
m_Path.push_back("/");
return;
}

View File

@ -64,6 +64,9 @@ BOOST_AUTO_TEST_CASE(format)
url = new Url("/foo/bar/index.php?blaka");
BOOST_CHECK(new Url(url->Format()));
url = new Url("/");
BOOST_CHECK(url->Format() == "/");
}
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(new Url("/?foo=baz??&\?\?=/?")); //Valid
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("/?fo=&bar=garOA"), std::invalid_argument);
}