| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "net/cookies/parsed_cookie.h" | 7 #include "net/cookies/parsed_cookie.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 9 |
| 10 namespace net { | 10 namespace net { |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 maxstr.resize(ParsedCookie::kMaxCookieSize, 'a'); | 201 maxstr.resize(ParsedCookie::kMaxCookieSize, 'a'); |
| 202 | 202 |
| 203 ParsedCookie pc1(maxstr); | 203 ParsedCookie pc1(maxstr); |
| 204 EXPECT_TRUE(pc1.IsValid()); | 204 EXPECT_TRUE(pc1.IsValid()); |
| 205 | 205 |
| 206 ParsedCookie pc2(maxstr + "A"); | 206 ParsedCookie pc2(maxstr + "A"); |
| 207 EXPECT_FALSE(pc2.IsValid()); | 207 EXPECT_FALSE(pc2.IsValid()); |
| 208 } | 208 } |
| 209 | 209 |
| 210 TEST(ParsedCookieTest, InvalidEmpty) { | 210 TEST(ParsedCookieTest, InvalidEmpty) { |
| 211 ParsedCookie pc(""); | 211 ParsedCookie pc((std::string())); |
| 212 EXPECT_FALSE(pc.IsValid()); | 212 EXPECT_FALSE(pc.IsValid()); |
| 213 } | 213 } |
| 214 | 214 |
| 215 TEST(ParsedCookieTest, EmbeddedTerminator) { | 215 TEST(ParsedCookieTest, EmbeddedTerminator) { |
| 216 ParsedCookie pc1("AAA=BB\0ZYX"); | 216 ParsedCookie pc1("AAA=BB\0ZYX"); |
| 217 ParsedCookie pc2("AAA=BB\rZYX"); | 217 ParsedCookie pc2("AAA=BB\rZYX"); |
| 218 ParsedCookie pc3("AAA=BB\nZYX"); | 218 ParsedCookie pc3("AAA=BB\nZYX"); |
| 219 EXPECT_TRUE(pc1.IsValid()); | 219 EXPECT_TRUE(pc1.IsValid()); |
| 220 EXPECT_EQ("AAA", pc1.Name()); | 220 EXPECT_EQ("AAA", pc1.Name()); |
| 221 EXPECT_EQ("BB", pc1.Value()); | 221 EXPECT_EQ("BB", pc1.Value()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 252 "path=/ ; "; | 252 "path=/ ; "; |
| 253 const char output[] = "ANCUUID=zohNumRKgI0oxyhSsV3Z7D; " | 253 const char output[] = "ANCUUID=zohNumRKgI0oxyhSsV3Z7D; " |
| 254 "expires=Sun, 18-Apr-2027 21:06:29 GMT; " | 254 "expires=Sun, 18-Apr-2027 21:06:29 GMT; " |
| 255 "path=/"; | 255 "path=/"; |
| 256 ParsedCookie pc(input); | 256 ParsedCookie pc(input); |
| 257 EXPECT_EQ(output, pc.ToCookieLine()); | 257 EXPECT_EQ(output, pc.ToCookieLine()); |
| 258 } | 258 } |
| 259 | 259 |
| 260 | 260 |
| 261 TEST(ParsedCookieTest, SetNameAndValue) { | 261 TEST(ParsedCookieTest, SetNameAndValue) { |
| 262 ParsedCookie empty(""); | 262 ParsedCookie empty((std::string())); |
| 263 EXPECT_FALSE(empty.IsValid()); | 263 EXPECT_FALSE(empty.IsValid()); |
| 264 EXPECT_FALSE(empty.SetDomain("foobar.com")); | 264 EXPECT_FALSE(empty.SetDomain("foobar.com")); |
| 265 EXPECT_TRUE(empty.SetName("name")); | 265 EXPECT_TRUE(empty.SetName("name")); |
| 266 EXPECT_TRUE(empty.SetValue("value")); | 266 EXPECT_TRUE(empty.SetValue("value")); |
| 267 EXPECT_EQ("name=value", empty.ToCookieLine()); | 267 EXPECT_EQ("name=value", empty.ToCookieLine()); |
| 268 EXPECT_TRUE(empty.IsValid()); | 268 EXPECT_TRUE(empty.IsValid()); |
| 269 | 269 |
| 270 // We don't test | 270 // We don't test |
| 271 // ParsedCookie invalid("@foo=bar"); | 271 // ParsedCookie invalid("@foo=bar"); |
| 272 // EXPECT_FALSE(invalid.IsValid()); | 272 // EXPECT_FALSE(invalid.IsValid()); |
| 273 // here because we are slightly more tolerant to invalid cookie names and | 273 // here because we are slightly more tolerant to invalid cookie names and |
| 274 // values that are set by webservers. We only enforce a correct name and | 274 // values that are set by webservers. We only enforce a correct name and |
| 275 // value if set via SetName() and SetValue(). | 275 // value if set via SetName() and SetValue(). |
| 276 | 276 |
| 277 ParsedCookie pc("name=value"); | 277 ParsedCookie pc("name=value"); |
| 278 EXPECT_TRUE(pc.IsValid()); | 278 EXPECT_TRUE(pc.IsValid()); |
| 279 | 279 |
| 280 // Set invalid name / value. | 280 // Set invalid name / value. |
| 281 EXPECT_FALSE(pc.SetName("@foobar")); | 281 EXPECT_FALSE(pc.SetName("@foobar")); |
| 282 EXPECT_EQ("name=value", pc.ToCookieLine()); | 282 EXPECT_EQ("name=value", pc.ToCookieLine()); |
| 283 EXPECT_TRUE(pc.IsValid()); | 283 EXPECT_TRUE(pc.IsValid()); |
| 284 | 284 |
| 285 EXPECT_FALSE(pc.SetName("")); | 285 EXPECT_FALSE(pc.SetName(std::string())); |
| 286 EXPECT_EQ("name=value", pc.ToCookieLine()); | 286 EXPECT_EQ("name=value", pc.ToCookieLine()); |
| 287 EXPECT_TRUE(pc.IsValid()); | 287 EXPECT_TRUE(pc.IsValid()); |
| 288 | 288 |
| 289 EXPECT_FALSE(pc.SetValue("foo bar")); | 289 EXPECT_FALSE(pc.SetValue("foo bar")); |
| 290 EXPECT_EQ("name=value", pc.ToCookieLine()); | 290 EXPECT_EQ("name=value", pc.ToCookieLine()); |
| 291 EXPECT_TRUE(pc.IsValid()); | 291 EXPECT_TRUE(pc.IsValid()); |
| 292 | 292 |
| 293 EXPECT_FALSE(pc.SetValue("\"foobar")); | 293 EXPECT_FALSE(pc.SetValue("\"foobar")); |
| 294 EXPECT_EQ("name=value", pc.ToCookieLine()); | 294 EXPECT_EQ("name=value", pc.ToCookieLine()); |
| 295 EXPECT_TRUE(pc.IsValid()); | 295 EXPECT_TRUE(pc.IsValid()); |
| 296 | 296 |
| 297 // Set valid name / value | 297 // Set valid name / value |
| 298 EXPECT_TRUE(pc.SetName("test")); | 298 EXPECT_TRUE(pc.SetName("test")); |
| 299 EXPECT_EQ("test=value", pc.ToCookieLine()); | 299 EXPECT_EQ("test=value", pc.ToCookieLine()); |
| 300 EXPECT_TRUE(pc.IsValid()); | 300 EXPECT_TRUE(pc.IsValid()); |
| 301 | 301 |
| 302 EXPECT_TRUE(pc.SetValue("\"foobar\"")); | 302 EXPECT_TRUE(pc.SetValue("\"foobar\"")); |
| 303 EXPECT_EQ("test=\"foobar\"", pc.ToCookieLine()); | 303 EXPECT_EQ("test=\"foobar\"", pc.ToCookieLine()); |
| 304 EXPECT_TRUE(pc.IsValid()); | 304 EXPECT_TRUE(pc.IsValid()); |
| 305 | 305 |
| 306 EXPECT_TRUE(pc.SetValue("")); | 306 EXPECT_TRUE(pc.SetValue(std::string())); |
| 307 EXPECT_EQ("test=", pc.ToCookieLine()); | 307 EXPECT_EQ("test=", pc.ToCookieLine()); |
| 308 EXPECT_TRUE(pc.IsValid()); | 308 EXPECT_TRUE(pc.IsValid()); |
| 309 } | 309 } |
| 310 | 310 |
| 311 TEST(ParsedCookieTest, SetAttributes) { | 311 TEST(ParsedCookieTest, SetAttributes) { |
| 312 ParsedCookie pc("name=value"); | 312 ParsedCookie pc("name=value"); |
| 313 EXPECT_TRUE(pc.IsValid()); | 313 EXPECT_TRUE(pc.IsValid()); |
| 314 | 314 |
| 315 // Clear an unset attribute. | 315 // Clear an unset attribute. |
| 316 EXPECT_TRUE(pc.SetDomain("")); | 316 EXPECT_TRUE(pc.SetDomain(std::string())); |
| 317 EXPECT_FALSE(pc.HasDomain()); | 317 EXPECT_FALSE(pc.HasDomain()); |
| 318 EXPECT_EQ("name=value", pc.ToCookieLine()); | 318 EXPECT_EQ("name=value", pc.ToCookieLine()); |
| 319 EXPECT_TRUE(pc.IsValid()); | 319 EXPECT_TRUE(pc.IsValid()); |
| 320 | 320 |
| 321 // Set a string containing an invalid character | 321 // Set a string containing an invalid character |
| 322 EXPECT_FALSE(pc.SetDomain("foo;bar")); | 322 EXPECT_FALSE(pc.SetDomain("foo;bar")); |
| 323 EXPECT_FALSE(pc.HasDomain()); | 323 EXPECT_FALSE(pc.HasDomain()); |
| 324 EXPECT_EQ("name=value", pc.ToCookieLine()); | 324 EXPECT_EQ("name=value", pc.ToCookieLine()); |
| 325 EXPECT_TRUE(pc.IsValid()); | 325 EXPECT_TRUE(pc.IsValid()); |
| 326 | 326 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 348 EXPECT_TRUE(pc.HasPath()); | 348 EXPECT_TRUE(pc.HasPath()); |
| 349 EXPECT_TRUE(pc.HasExpires()); | 349 EXPECT_TRUE(pc.HasExpires()); |
| 350 EXPECT_TRUE(pc.IsSecure()); | 350 EXPECT_TRUE(pc.IsSecure()); |
| 351 EXPECT_TRUE(pc.IsHttpOnly()); | 351 EXPECT_TRUE(pc.IsHttpOnly()); |
| 352 EXPECT_EQ("name=value; domain=domain.com; path=/foo; " | 352 EXPECT_EQ("name=value; domain=domain.com; path=/foo; " |
| 353 "expires=Sun, 18-Apr-2027 21:06:29 GMT; max-age=12345; secure; " | 353 "expires=Sun, 18-Apr-2027 21:06:29 GMT; max-age=12345; secure; " |
| 354 "httponly", | 354 "httponly", |
| 355 pc.ToCookieLine()); | 355 pc.ToCookieLine()); |
| 356 | 356 |
| 357 // Clear the rest and change the name and value. | 357 // Clear the rest and change the name and value. |
| 358 EXPECT_TRUE(pc.SetDomain("")); | 358 EXPECT_TRUE(pc.SetDomain(std::string())); |
| 359 EXPECT_TRUE(pc.SetPath("")); | 359 EXPECT_TRUE(pc.SetPath(std::string())); |
| 360 EXPECT_TRUE(pc.SetExpires("")); | 360 EXPECT_TRUE(pc.SetExpires(std::string())); |
| 361 EXPECT_TRUE(pc.SetMaxAge("")); | 361 EXPECT_TRUE(pc.SetMaxAge(std::string())); |
| 362 EXPECT_TRUE(pc.SetIsSecure(false)); | 362 EXPECT_TRUE(pc.SetIsSecure(false)); |
| 363 EXPECT_TRUE(pc.SetIsHttpOnly(false)); | 363 EXPECT_TRUE(pc.SetIsHttpOnly(false)); |
| 364 EXPECT_TRUE(pc.SetName("name2")); | 364 EXPECT_TRUE(pc.SetName("name2")); |
| 365 EXPECT_TRUE(pc.SetValue("value2")); | 365 EXPECT_TRUE(pc.SetValue("value2")); |
| 366 EXPECT_FALSE(pc.HasDomain()); | 366 EXPECT_FALSE(pc.HasDomain()); |
| 367 EXPECT_FALSE(pc.HasPath()); | 367 EXPECT_FALSE(pc.HasPath()); |
| 368 EXPECT_FALSE(pc.HasExpires()); | 368 EXPECT_FALSE(pc.HasExpires()); |
| 369 EXPECT_FALSE(pc.HasMaxAge()); | 369 EXPECT_FALSE(pc.HasMaxAge()); |
| 370 EXPECT_FALSE(pc.IsSecure()); | 370 EXPECT_FALSE(pc.IsSecure()); |
| 371 EXPECT_FALSE(pc.IsHttpOnly()); | 371 EXPECT_FALSE(pc.IsHttpOnly()); |
| 372 EXPECT_EQ("name2=value2", pc.ToCookieLine()); | 372 EXPECT_EQ("name2=value2", pc.ToCookieLine()); |
| 373 } | 373 } |
| 374 | 374 |
| 375 } // namespace net | 375 } // namespace net |
| OLD | NEW |