Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(514)

Side by Side Diff: net/cookies/cookie_monster_unittest.cc

Issue 1393193005: Implement $Secure- cookie prefix (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test fix Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "net/cookies/cookie_store_unittest.h" 5 #include "net/cookies/cookie_store_unittest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 return new CookieMonster(NULL, NULL); 93 return new CookieMonster(NULL, NULL);
94 } 94 }
95 95
96 static const bool is_cookie_monster = true; 96 static const bool is_cookie_monster = true;
97 static const bool supports_http_only = true; 97 static const bool supports_http_only = true;
98 static const bool supports_non_dotted_domains = true; 98 static const bool supports_non_dotted_domains = true;
99 static const bool preserves_trailing_dots = true; 99 static const bool preserves_trailing_dots = true;
100 static const bool filters_schemes = true; 100 static const bool filters_schemes = true;
101 static const bool has_path_prefix_bug = false; 101 static const bool has_path_prefix_bug = false;
102 static const int creation_time_granularity_in_ms = 0; 102 static const int creation_time_granularity_in_ms = 0;
103 static const bool enforces_prefixes = true;
103 }; 104 };
104 105
105 INSTANTIATE_TYPED_TEST_CASE_P(CookieMonster, 106 INSTANTIATE_TYPED_TEST_CASE_P(CookieMonster,
106 CookieStoreTest, 107 CookieStoreTest,
107 CookieMonsterTestTraits); 108 CookieMonsterTestTraits);
108 109
109 INSTANTIATE_TYPED_TEST_CASE_P(CookieMonster, 110 INSTANTIATE_TYPED_TEST_CASE_P(CookieMonster,
110 MultiThreadedCookieStoreTest, 111 MultiThreadedCookieStoreTest,
111 CookieMonsterTestTraits); 112 CookieMonsterTestTraits);
112 113
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 const std::string& path, 154 const std::string& path,
154 const base::Time& expiration_time, 155 const base::Time& expiration_time,
155 bool secure, 156 bool secure,
156 bool http_only, 157 bool http_only,
157 bool first_party_only, 158 bool first_party_only,
158 CookiePriority priority) { 159 CookiePriority priority) {
159 DCHECK(cm); 160 DCHECK(cm);
160 ResultSavingCookieCallback<bool> callback; 161 ResultSavingCookieCallback<bool> callback;
161 cm->SetCookieWithDetailsAsync( 162 cm->SetCookieWithDetailsAsync(
162 url, name, value, domain, path, expiration_time, secure, http_only, 163 url, name, value, domain, path, expiration_time, secure, http_only,
163 first_party_only, priority, 164 first_party_only, false /* enforce prefixes */, priority,
164 base::Bind(&ResultSavingCookieCallback<bool>::Run, 165 base::Bind(&ResultSavingCookieCallback<bool>::Run,
165 base::Unretained(&callback))); 166 base::Unretained(&callback)));
166 RunFor(kTimeout); 167 RunFor(kTimeout);
167 EXPECT_TRUE(callback.did_run()); 168 EXPECT_TRUE(callback.did_run());
168 return callback.result(); 169 return callback.result();
169 } 170 }
170 171
171 bool SetAllCookies(CookieMonster* cm, const CookieList& list) { 172 bool SetAllCookies(CookieMonster* cm, const CookieList& list) {
172 DCHECK(cm); 173 DCHECK(cm);
173 ResultSavingCookieCallback<bool> callback; 174 ResultSavingCookieCallback<bool> callback;
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 cookie_monster, 664 cookie_monster,
664 delete_begin, 665 delete_begin,
665 delete_end, 666 delete_end,
666 callback) { 667 callback) {
667 cookie_monster->DeleteAllCreatedBetweenAsync(delete_begin, delete_end, 668 cookie_monster->DeleteAllCreatedBetweenAsync(delete_begin, delete_end,
668 callback->AsCallback()); 669 callback->AsCallback());
669 } 670 }
670 ACTION_P3(SetCookieWithDetailsAction, cookie_monster, cc, callback) { 671 ACTION_P3(SetCookieWithDetailsAction, cookie_monster, cc, callback) {
671 cookie_monster->SetCookieWithDetailsAsync( 672 cookie_monster->SetCookieWithDetailsAsync(
672 cc.url, cc.name, cc.value, cc.domain, cc.path, cc.expiration_time, 673 cc.url, cc.name, cc.value, cc.domain, cc.path, cc.expiration_time,
673 cc.secure, cc.http_only, cc.first_party_only, cc.priority, 674 cc.secure, cc.http_only, cc.first_party_only,
674 callback->AsCallback()); 675 false /* enforce prefixes */, cc.priority, callback->AsCallback());
675 } 676 }
676 677
677 ACTION_P2(GetAllCookiesAction, cookie_monster, callback) { 678 ACTION_P2(GetAllCookiesAction, cookie_monster, callback) {
678 cookie_monster->GetAllCookiesAsync(callback->AsCallback()); 679 cookie_monster->GetAllCookiesAsync(callback->AsCallback());
679 } 680 }
680 681
681 ACTION_P3(DeleteAllForHostAction, cookie_monster, url, callback) { 682 ACTION_P3(DeleteAllForHostAction, cookie_monster, url, callback) {
682 cookie_monster->DeleteAllForHostAsync(url, callback->AsCallback()); 683 cookie_monster->DeleteAllForHostAsync(url, callback->AsCallback());
683 } 684 }
684 685
(...skipping 1783 matching lines...) Expand 10 before | Expand all | Expand 10 after
2468 std::string value = "B"; 2469 std::string value = "B";
2469 std::string domain = std::string(); 2470 std::string domain = std::string();
2470 std::string path = "/foo"; 2471 std::string path = "/foo";
2471 base::Time expiration_time = base::Time(); 2472 base::Time expiration_time = base::Time();
2472 bool secure = false; 2473 bool secure = false;
2473 bool http_only = false; 2474 bool http_only = false;
2474 bool first_party_only = false; 2475 bool first_party_only = false;
2475 CookiePriority priority = COOKIE_PRIORITY_DEFAULT; 2476 CookiePriority priority = COOKIE_PRIORITY_DEFAULT;
2476 cm->SetCookieWithDetailsAsync( 2477 cm->SetCookieWithDetailsAsync(
2477 url, name, value, domain, path, expiration_time, secure, http_only, 2478 url, name, value, domain, path, expiration_time, secure, http_only,
2478 first_party_only, priority, 2479 first_party_only, false /* enforce prefixes */, priority,
2479 base::Bind(&ResultSavingCookieCallback<bool>::Run, 2480 base::Bind(&ResultSavingCookieCallback<bool>::Run,
2480 base::Unretained(callback))); 2481 base::Unretained(callback)));
2481 } 2482 }
2482 2483
2483 void DeleteAllCreatedBetweenTask(CookieMonster* cm, 2484 void DeleteAllCreatedBetweenTask(CookieMonster* cm,
2484 const base::Time& delete_begin, 2485 const base::Time& delete_begin,
2485 const base::Time& delete_end, 2486 const base::Time& delete_end,
2486 ResultSavingCookieCallback<int>* callback) { 2487 ResultSavingCookieCallback<int>* callback) {
2487 cm->DeleteAllCreatedBetweenAsync( 2488 cm->DeleteAllCreatedBetweenAsync(
2488 delete_begin, delete_end, 2489 delete_begin, delete_end,
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
2959 histograms.ExpectTotalCount(cookie_source_histogram, 5); 2960 histograms.ExpectTotalCount(cookie_source_histogram, 5);
2960 2961
2961 // Set a non-Secure cookie on a non-cryptographic scheme. 2962 // Set a non-Secure cookie on a non-cryptographic scheme.
2962 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "H=I; path=/")); 2963 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "H=I; path=/"));
2963 histograms.ExpectTotalCount(cookie_source_histogram, 6); 2964 histograms.ExpectTotalCount(cookie_source_histogram, 6);
2964 histograms.ExpectBucketCount( 2965 histograms.ExpectBucketCount(
2965 cookie_source_histogram, 2966 cookie_source_histogram,
2966 CookieMonster::COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME, 1); 2967 CookieMonster::COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME, 1);
2967 } 2968 }
2968 2969
2970 TEST_F(CookieMonsterTest, SecureCookiePrefix) {
2971 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL));
2972 // A $Secure- cookie must be Secure.
2973 EXPECT_FALSE(SetCookie(cm.get(), https_www_google_.url(), "$Secure-A=B"));
2974 EXPECT_FALSE(
2975 SetCookie(cm.get(), https_www_google_.url(), "$Secure-A=B; httponly"));
2976
2977 // A typoed prefix does not have to be Secure.
2978 EXPECT_TRUE(
2979 SetCookie(cm.get(), https_www_google_.url(), "$secure-A=B; Secure"));
2980 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "$secure-A=C;"));
2981 EXPECT_TRUE(
2982 SetCookie(cm.get(), https_www_google_.url(), "$SecureA=B; Secure"));
2983 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "$SecureA=C;"));
2984
2985 EXPECT_TRUE(
2986 SetCookie(cm.get(), https_www_google_.url(), "$Secure-A=B; Secure"));
2987
2988 // A $Secure- cookie can't be set on a non-secure origin.
2989 EXPECT_FALSE(
2990 SetCookie(cm.get(), http_www_google_.url(), "$Secure-A=B; Secure"));
2991 }
2992
2969 class CookieMonsterNotificationTest : public CookieMonsterTest { 2993 class CookieMonsterNotificationTest : public CookieMonsterTest {
2970 public: 2994 public:
2971 CookieMonsterNotificationTest() 2995 CookieMonsterNotificationTest()
2972 : test_url_("http://www.google.com/foo"), 2996 : test_url_("http://www.google.com/foo"),
2973 store_(new MockPersistentCookieStore), 2997 store_(new MockPersistentCookieStore),
2974 monster_(new CookieMonster(store_.get(), NULL)) {} 2998 monster_(new CookieMonster(store_.get(), NULL)) {}
2975 2999
2976 ~CookieMonsterNotificationTest() override {} 3000 ~CookieMonsterNotificationTest() override {}
2977 3001
2978 CookieMonster* monster() { return monster_.get(); } 3002 CookieMonster* monster() { return monster_.get(); }
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
3116 monster()->AddCallbackForCookie( 3140 monster()->AddCallbackForCookie(
3117 test_url_, "abc", 3141 test_url_, "abc",
3118 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); 3142 base::Bind(&RecordCookieChanges, &cookies1, nullptr)));
3119 SetCookie(monster(), test_url_, "abc=def"); 3143 SetCookie(monster(), test_url_, "abc=def");
3120 base::MessageLoop::current()->RunUntilIdle(); 3144 base::MessageLoop::current()->RunUntilIdle();
3121 EXPECT_EQ(1U, cookies0.size()); 3145 EXPECT_EQ(1U, cookies0.size());
3122 EXPECT_EQ(1U, cookies0.size()); 3146 EXPECT_EQ(1U, cookies0.size());
3123 } 3147 }
3124 3148
3125 } // namespace net 3149 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698