| Index: net/http/http_util_unittest.cc
|
| diff --git a/net/http/http_util_unittest.cc b/net/http/http_util_unittest.cc
|
| index 2b456605d703ae7c5c7bb178d7b64ce4165e7e31..8df697a90d693a5a32d324174bf98e7ef67ab1f0 100644
|
| --- a/net/http/http_util_unittest.cc
|
| +++ b/net/http/http_util_unittest.cc
|
| @@ -249,6 +249,40 @@ TEST(HttpUtilTest, Unquote) {
|
| EXPECT_STREQ("x\"", HttpUtil::Unquote("'x\"'").c_str());
|
| }
|
|
|
| +TEST(HttpUtilTest, StrictUnquote) {
|
| + std::string out;
|
| +
|
| + // Replace <backslash> " with ".
|
| + EXPECT_TRUE(HttpUtil::StrictUnquote("\"xyz\\\"abc\"", &out));
|
| + EXPECT_STREQ("xyz\"abc", out.c_str());
|
| +
|
| + // Replace <backslash> <backslash> with <backslash>
|
| + EXPECT_TRUE(HttpUtil::StrictUnquote("\"xyz\\\\abc\"", &out));
|
| + EXPECT_STREQ("xyz\\abc", out.c_str());
|
| + EXPECT_TRUE(HttpUtil::StrictUnquote("\"xyz\\\\\\\\\\\\abc\"", &out));
|
| + EXPECT_STREQ("xyz\\\\\\abc", out.c_str());
|
| +
|
| + // Replace <backslash> X with X
|
| + EXPECT_TRUE(HttpUtil::StrictUnquote("\"xyz\\Xabc\"", &out));
|
| + EXPECT_STREQ("xyzXabc", out.c_str());
|
| +
|
| + // Return false on unquoted inputs.
|
| + EXPECT_FALSE(HttpUtil::StrictUnquote("X", &out));
|
| +
|
| + // Return false on mismatched quotes.
|
| + EXPECT_FALSE(HttpUtil::StrictUnquote("\"", &out));
|
| + EXPECT_FALSE(HttpUtil::StrictUnquote("\"xyz", &out));
|
| + EXPECT_FALSE(HttpUtil::StrictUnquote("\"abc'", &out));
|
| +
|
| + // Return false on escaped terminal quote.
|
| + EXPECT_FALSE(HttpUtil::StrictUnquote("\"abc\\\"", &out));
|
| +
|
| + // Allow single quotes to act as quote marks.
|
| + // Not part of RFC 2616.
|
| + EXPECT_TRUE(HttpUtil::StrictUnquote("'x\"'", &out));
|
| + EXPECT_STREQ("x\"", out.c_str());
|
| +}
|
| +
|
| TEST(HttpUtilTest, Quote) {
|
| EXPECT_STREQ("\"xyz\\\"abc\"", HttpUtil::Quote("xyz\"abc").c_str());
|
|
|
| @@ -1177,6 +1211,20 @@ TEST(HttpUtilTest, NameValuePairsIteratorMissingEndQuote) {
|
| &parser, false, true, std::string(), std::string()));
|
| }
|
|
|
| +TEST(HttpUtilTest, NameValuePairsIteratorStrictQuotes) {
|
| + std::string data = "foo=\"bar\"; name='value";
|
| + HttpUtil::NameValuePairsIterator parser(
|
| + data.begin(), data.end(), ';',
|
| + HttpUtil::NameValuePairsIterator::VALUES_NOT_OPTIONAL,
|
| + HttpUtil::NameValuePairsIterator::STRICT_QUOTES);
|
| + EXPECT_TRUE(parser.valid());
|
| +
|
| + ASSERT_NO_FATAL_FAILURE(
|
| + CheckNextNameValuePair(&parser, true, true, "foo", "bar"));
|
| + ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair(&parser, false, false,
|
| + std::string(), std::string()));
|
| +}
|
| +
|
| TEST(HttpUtilTest, IsValidHeaderValueRFC7230) {
|
| EXPECT_TRUE(HttpUtil::IsValidHeaderValueRFC7230(""));
|
|
|
|
|