| Index: net/cookies/cookie_util_unittest.cc
|
| diff --git a/net/cookies/cookie_util_unittest.cc b/net/cookies/cookie_util_unittest.cc
|
| index f297afdd076672b33e28b1951dc1928048bdcf55..98c206146523b8d6fbdfc33563cc1323757a241e 100644
|
| --- a/net/cookies/cookie_util_unittest.cc
|
| +++ b/net/cookies/cookie_util_unittest.cc
|
| @@ -2,10 +2,49 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include <string>
|
| +#include <utility>
|
| +#include <vector>
|
| +
|
| #include "base/basictypes.h"
|
| #include "net/cookies/cookie_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +namespace {
|
| +
|
| +struct RequestCookieParsingTest {
|
| + std::string str;
|
| + std::vector<std::pair<std::string, std::string> > parsed;
|
| +};
|
| +
|
| +net::cookie_util::ParsedRequestCookies MakeParsedRequestCookies(
|
| + const std::vector<std::pair<std::string, std::string> >& data) {
|
| + net::cookie_util::ParsedRequestCookies parsed;
|
| + for (size_t i = 0; i < data.size(); i++) {
|
| + parsed.push_back(std::make_pair(base::StringPiece(data[i].first),
|
| + base::StringPiece(data[i].second)));
|
| + }
|
| + return parsed;
|
| +}
|
| +
|
| +void CheckParse(
|
| + const std::string& str,
|
| + const std::vector<std::pair<std::string, std::string> >& parsed_expected) {
|
| + net::cookie_util::ParsedRequestCookies parsed;
|
| + net::cookie_util::ParseRequestCookieLine(str, &parsed);
|
| + EXPECT_EQ(MakeParsedRequestCookies(parsed_expected), parsed);
|
| +}
|
| +
|
| +void CheckSerialize(
|
| + const std::vector<std::pair<std::string, std::string> >& parsed,
|
| + const std::string& str_expected) {
|
| + net::cookie_util::ParsedRequestCookies prc =
|
| + MakeParsedRequestCookies(parsed);
|
| + EXPECT_EQ(str_expected, net::cookie_util::SerializeRequestCookieLine(prc));
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| TEST(CookieUtilTest, TestDomainIsHostOnly) {
|
| const struct {
|
| const char* str;
|
| @@ -109,3 +148,49 @@ TEST(CookieUtilTest, TestCookieDateParsing) {
|
| EXPECT_EQ(tests[i].epoch, parsed_time.ToTimeT()) << tests[i].str;
|
| }
|
| }
|
| +
|
| +TEST(CookieUtilTest, TestRequestCookieParsing) {
|
| + std::vector<RequestCookieParsingTest> tests;
|
| +
|
| + // Simple case.
|
| + tests.push_back(RequestCookieParsingTest());
|
| + tests.back().str = "key=value";
|
| + tests.back().parsed.push_back(std::make_pair(std::string("key"),
|
| + std::string("value")));
|
| + // Multiple key/value pairs.
|
| + tests.push_back(RequestCookieParsingTest());
|
| + tests.back().str = "key1=value1; key2=value2";
|
| + tests.back().parsed.push_back(std::make_pair(std::string("key1"),
|
| + std::string("value1")));
|
| + tests.back().parsed.push_back(std::make_pair(std::string("key2"),
|
| + std::string("value2")));
|
| + // Empty value.
|
| + tests.push_back(RequestCookieParsingTest());
|
| + tests.back().str = "key=; otherkey=1234";
|
| + tests.back().parsed.push_back(std::make_pair(std::string("key"),
|
| + std::string()));
|
| + tests.back().parsed.push_back(std::make_pair(std::string("otherkey"),
|
| + std::string("1234")));
|
| + // Special characters (including equals signs) in value.
|
| + tests.push_back(RequestCookieParsingTest());
|
| + tests.back().str = "key=; a2=s=(./&t=:&u=a#$; a3=+~";
|
| + tests.back().parsed.push_back(std::make_pair(std::string("key"),
|
| + std::string()));
|
| + tests.back().parsed.push_back(std::make_pair(std::string("a2"),
|
| + std::string("s=(./&t=:&u=a#$")));
|
| + tests.back().parsed.push_back(std::make_pair(std::string("a3"),
|
| + std::string("+~")));
|
| + // Quoted value.
|
| + tests.push_back(RequestCookieParsingTest());
|
| + tests.back().str = "key=\"abcdef\"; otherkey=1234";
|
| + tests.back().parsed.push_back(std::make_pair(std::string("key"),
|
| + std::string("\"abcdef\"")));
|
| + tests.back().parsed.push_back(std::make_pair(std::string("otherkey"),
|
| + std::string("1234")));
|
| +
|
| + for (size_t i = 0; i < tests.size(); i++) {
|
| + SCOPED_TRACE(testing::Message() << "Test " << i);
|
| + CheckParse(tests[i].str, tests[i].parsed);
|
| + CheckSerialize(tests[i].parsed, tests[i].str);
|
| + }
|
| +}
|
|
|