Index: net/cookies/parsed_cookie_unittest.cc |
diff --git a/net/cookies/parsed_cookie_unittest.cc b/net/cookies/parsed_cookie_unittest.cc |
index 27efb99adfcea226c2a12a378b89feda74a7c408..7cda724404954035b56e895bb05664352f57f009 100644 |
--- a/net/cookies/parsed_cookie_unittest.cc |
+++ b/net/cookies/parsed_cookie_unittest.cc |
@@ -18,19 +18,22 @@ TEST(ParsedCookieTest, TestBasic) { |
EXPECT_EQ("b", pc.Value()); |
} |
+// De facto standard behavior, per https://crbug.com/601786. |
TEST(ParsedCookieTest, TestEmpty) { |
ParsedCookie pc1("=; path=/; secure;"); |
- EXPECT_FALSE(pc1.IsValid()); |
+ EXPECT_TRUE(pc1.IsValid()); |
ParsedCookie pc2("= ; path=/; secure;"); |
- EXPECT_FALSE(pc2.IsValid()); |
+ EXPECT_TRUE(pc2.IsValid()); |
ParsedCookie pc3(" =; path=/; secure;"); |
- EXPECT_FALSE(pc3.IsValid()); |
+ EXPECT_TRUE(pc3.IsValid()); |
ParsedCookie pc4(" = ; path=/; secure;"); |
- EXPECT_FALSE(pc4.IsValid()); |
+ EXPECT_TRUE(pc4.IsValid()); |
ParsedCookie pc5(" ; path=/; secure;"); |
- EXPECT_FALSE(pc5.IsValid()); |
+ EXPECT_TRUE(pc5.IsValid()); |
ParsedCookie pc6("; path=/; secure;"); |
- EXPECT_FALSE(pc6.IsValid()); |
+ EXPECT_TRUE(pc6.IsValid()); |
+ ParsedCookie pc7("\t; path=/; secure;"); |
+ EXPECT_TRUE(pc7.IsValid()); |
mmenke
2016/08/15 21:11:03
We should check the actual value, too, right? Als
mmenke
2016/08/15 21:11:03
We should also check ";" and "=" (With no extra st
mmenke
2016/08/15 21:11:03
optional: Suggest merging ValidOnlyWhitespace and
jww
2016/08/16 02:24:23
Good calls all around. I've done all of your sugge
|
} |
TEST(ParsedCookieTest, TestQuoted) { |
@@ -221,11 +224,6 @@ TEST(ParsedCookieTest, TooManyPairs) { |
} |
// TODO(erikwright): some better test cases for invalid cookies. |
-TEST(ParsedCookieTest, InvalidWhitespace) { |
- ParsedCookie pc(" "); |
- EXPECT_FALSE(pc.IsValid()); |
-} |
- |
TEST(ParsedCookieTest, InvalidTooLong) { |
std::string maxstr; |
maxstr.resize(ParsedCookie::kMaxCookieSize, 'a'); |
@@ -237,9 +235,16 @@ TEST(ParsedCookieTest, InvalidTooLong) { |
EXPECT_FALSE(pc2.IsValid()); |
} |
-TEST(ParsedCookieTest, InvalidEmpty) { |
+// De facto standard behavior, per https://crbug.com/601786. |
+TEST(ParsedCookieTest, ValidOnlyWhitespace) { |
+ ParsedCookie pc(" "); |
+ EXPECT_TRUE(pc.IsValid()); |
+} |
+ |
+// De facto standard behavior, per https://crbug.com/601786. |
+TEST(ParsedCookieTest, ValidEmpty) { |
ParsedCookie pc((std::string())); |
- EXPECT_FALSE(pc.IsValid()); |
+ EXPECT_TRUE(pc.IsValid()); |
} |
TEST(ParsedCookieTest, EmbeddedTerminator) { |
@@ -285,11 +290,11 @@ TEST(ParsedCookieTest, SerializeCookieLine) { |
TEST(ParsedCookieTest, SetNameAndValue) { |
ParsedCookie empty((std::string())); |
- EXPECT_FALSE(empty.IsValid()); |
- EXPECT_FALSE(empty.SetDomain("foobar.com")); |
+ EXPECT_TRUE(empty.IsValid()); |
+ EXPECT_TRUE(empty.SetDomain("foobar.com")); |
EXPECT_TRUE(empty.SetName("name")); |
EXPECT_TRUE(empty.SetValue("value")); |
- EXPECT_EQ("name=value", empty.ToCookieLine()); |
+ EXPECT_EQ("name=value; domain=foobar.com", empty.ToCookieLine()); |
EXPECT_TRUE(empty.IsValid()); |
// We don't test |
@@ -415,6 +420,17 @@ TEST(ParsedCookieTest, SetAttributes) { |
EXPECT_EQ("name2=value2", pc.ToCookieLine()); |
} |
+// Set the domain attribute twice in a cookie line. If the second attribute's |
+// value is empty, it shoud be ignored. |
+// |
+// This is de facto standard behavior, per https://crbug.com/601786. |
+TEST(ParsedCookieTest, MultipleDomainAttributes) { |
+ ParsedCookie pc1("name=value; domain=foo.com; domain=bar.com"); |
+ EXPECT_EQ("bar.com", pc1.Domain()); |
+ ParsedCookie pc2("name=value; domain=foo.com; domain="); |
+ EXPECT_EQ("foo.com", pc2.Domain()); |
+} |
+ |
TEST(ParsedCookieTest, SetPriority) { |
ParsedCookie pc("name=value"); |
EXPECT_TRUE(pc.IsValid()); |