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

Side by Side Diff: chrome/browser/extensions/api/cookies/cookies_unittest.cc

Issue 2861063003: Remove dangerous CanonicalCookie::Create method. (Closed)
Patch Set: Use creation_time for last_access_time as per Elly's suggestion. Created 3 years, 7 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
« no previous file with comments | « no previous file | components/signin/core/browser/gaia_cookie_manager_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Tests common functionality used by the Chrome Extensions Cookies API 5 // Tests common functionality used by the Chrome Extensions Cookies API
6 // implementation. 6 // implementation.
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 17 matching lines...) Expand all
28 namespace GetAll = extensions::api::cookies::GetAll; 28 namespace GetAll = extensions::api::cookies::GetAll;
29 29
30 namespace extensions { 30 namespace extensions {
31 31
32 namespace keys = cookies_api_constants; 32 namespace keys = cookies_api_constants;
33 33
34 namespace { 34 namespace {
35 35
36 struct DomainMatchCase { 36 struct DomainMatchCase {
37 const char* filter; 37 const char* filter;
38 const char* url;
39 const char* domain; 38 const char* domain;
40 const bool matches; 39 const bool matches;
41 }; 40 };
42 41
43 } // namespace 42 } // namespace
44 43
45 class ExtensionCookiesTest : public testing::Test { 44 class ExtensionCookiesTest : public testing::Test {
46 private: 45 private:
47 content::TestBrowserThreadBundle thread_bundle_; 46 content::TestBrowserThreadBundle thread_bundle_;
48 }; 47 };
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 cookies_helpers::ChooseProfileFromStoreId( 80 cookies_helpers::ChooseProfileFromStoreId(
82 "1", profile->GetOffTheRecordProfile(), true)); 81 "1", profile->GetOffTheRecordProfile(), true));
83 EXPECT_EQ(profile->GetOffTheRecordProfile(), 82 EXPECT_EQ(profile->GetOffTheRecordProfile(),
84 cookies_helpers::ChooseProfileFromStoreId( 83 cookies_helpers::ChooseProfileFromStoreId(
85 "1", profile->GetOffTheRecordProfile(), false)); 84 "1", profile->GetOffTheRecordProfile(), false));
86 } 85 }
87 86
88 TEST_F(ExtensionCookiesTest, ExtensionTypeCreation) { 87 TEST_F(ExtensionCookiesTest, ExtensionTypeCreation) {
89 std::unique_ptr<net::CanonicalCookie> canonical_cookie1( 88 std::unique_ptr<net::CanonicalCookie> canonical_cookie1(
90 net::CanonicalCookie::Create( 89 net::CanonicalCookie::Create(
91 GURL("http://www.example.com"), "ABC", "DEF", std::string(), "/", 90 "ABC", "DEF", "www.example.com", "/", base::Time(), base::Time(),
92 base::Time(), base::Time(), false, false, 91 base::Time(), false, false, net::CookieSameSite::DEFAULT_MODE,
93 net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT)); 92 net::COOKIE_PRIORITY_DEFAULT));
94 ASSERT_NE(nullptr, canonical_cookie1.get()); 93 ASSERT_NE(nullptr, canonical_cookie1.get());
95 Cookie cookie1 = 94 Cookie cookie1 =
96 cookies_helpers::CreateCookie(*canonical_cookie1, "some cookie store"); 95 cookies_helpers::CreateCookie(*canonical_cookie1, "some cookie store");
97 EXPECT_EQ("ABC", cookie1.name); 96 EXPECT_EQ("ABC", cookie1.name);
98 EXPECT_EQ("DEF", cookie1.value); 97 EXPECT_EQ("DEF", cookie1.value);
99 EXPECT_EQ("www.example.com", cookie1.domain); 98 EXPECT_EQ("www.example.com", cookie1.domain);
100 EXPECT_TRUE(cookie1.host_only); 99 EXPECT_TRUE(cookie1.host_only);
101 EXPECT_EQ("/", cookie1.path); 100 EXPECT_EQ("/", cookie1.path);
102 EXPECT_FALSE(cookie1.secure); 101 EXPECT_FALSE(cookie1.secure);
103 EXPECT_FALSE(cookie1.http_only); 102 EXPECT_FALSE(cookie1.http_only);
104 EXPECT_EQ(api::cookies::SAME_SITE_STATUS_NO_RESTRICTION, cookie1.same_site); 103 EXPECT_EQ(api::cookies::SAME_SITE_STATUS_NO_RESTRICTION, cookie1.same_site);
105 EXPECT_TRUE(cookie1.session); 104 EXPECT_TRUE(cookie1.session);
106 EXPECT_FALSE(cookie1.expiration_date.get()); 105 EXPECT_FALSE(cookie1.expiration_date.get());
107 EXPECT_EQ("some cookie store", cookie1.store_id); 106 EXPECT_EQ("some cookie store", cookie1.store_id);
108 107
109 std::unique_ptr<net::CanonicalCookie> canonical_cookie2( 108 std::unique_ptr<net::CanonicalCookie> canonical_cookie2(
110 net::CanonicalCookie::Create( 109 net::CanonicalCookie::Create(
111 GURL("http://example.com"), "ABC", "DEF", ".example.com", "/", 110 "ABC", "DEF", ".example.com", "/", base::Time(),
112 base::Time(), base::Time::FromDoubleT(10000), false, false, 111 base::Time::FromDoubleT(10000), base::Time(), false, false,
113 net::CookieSameSite::STRICT_MODE, net::COOKIE_PRIORITY_DEFAULT)); 112 net::CookieSameSite::STRICT_MODE, net::COOKIE_PRIORITY_DEFAULT));
114 ASSERT_NE(nullptr, canonical_cookie2.get()); 113 ASSERT_NE(nullptr, canonical_cookie2.get());
115 Cookie cookie2 = 114 Cookie cookie2 =
116 cookies_helpers::CreateCookie(*canonical_cookie2, "some cookie store"); 115 cookies_helpers::CreateCookie(*canonical_cookie2, "some cookie store");
117 EXPECT_FALSE(cookie2.host_only); 116 EXPECT_FALSE(cookie2.host_only);
118 EXPECT_FALSE(cookie2.session); 117 EXPECT_FALSE(cookie2.session);
119 EXPECT_EQ(api::cookies::SAME_SITE_STATUS_STRICT, cookie2.same_site); 118 EXPECT_EQ(api::cookies::SAME_SITE_STATUS_STRICT, cookie2.same_site);
120 ASSERT_TRUE(cookie2.expiration_date.get()); 119 ASSERT_TRUE(cookie2.expiration_date.get());
121 EXPECT_EQ(10000, *cookie2.expiration_date); 120 EXPECT_EQ(10000, *cookie2.expiration_date);
122 121
123 TestingProfile profile; 122 TestingProfile profile;
124 auto tab_ids_list = base::MakeUnique<base::ListValue>(); 123 auto tab_ids_list = base::MakeUnique<base::ListValue>();
125 std::vector<int> tab_ids; 124 std::vector<int> tab_ids;
126 CookieStore cookie_store = 125 CookieStore cookie_store =
127 cookies_helpers::CreateCookieStore(&profile, std::move(tab_ids_list)); 126 cookies_helpers::CreateCookieStore(&profile, std::move(tab_ids_list));
128 EXPECT_EQ("0", cookie_store.id); 127 EXPECT_EQ("0", cookie_store.id);
129 EXPECT_EQ(tab_ids, cookie_store.tab_ids); 128 EXPECT_EQ(tab_ids, cookie_store.tab_ids);
130 } 129 }
131 130
132 TEST_F(ExtensionCookiesTest, GetURLFromCanonicalCookie) { 131 TEST_F(ExtensionCookiesTest, GetURLFromCanonicalCookie) {
133 std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create( 132 std::unique_ptr<net::CanonicalCookie> cookie1(net::CanonicalCookie::Create(
134 GURL("http://example.com"), "ABC", "DEF", "example.com", "/", 133 "ABC", "DEF", ".example.com", "/", base::Time(), base::Time(),
135 base::Time(), base::Time(), false, false, 134 base::Time(), false, false, net::CookieSameSite::DEFAULT_MODE,
136 net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT)); 135 net::COOKIE_PRIORITY_DEFAULT));
137 ASSERT_NE(nullptr, cookie1.get()); 136 ASSERT_NE(nullptr, cookie1.get());
138 EXPECT_EQ("http://example.com/", 137 EXPECT_EQ("http://example.com/",
139 cookies_helpers::GetURLFromCanonicalCookie(*cookie1).spec()); 138 cookies_helpers::GetURLFromCanonicalCookie(*cookie1).spec());
140 139
141 std::unique_ptr<net::CanonicalCookie> cookie2(net::CanonicalCookie::Create( 140 std::unique_ptr<net::CanonicalCookie> cookie2(net::CanonicalCookie::Create(
142 GURL("https://helloworld.com"), "ABC", "DEF", ".helloworld.com", "/", 141 "ABC", "DEF", ".helloworld.com", "/", base::Time(), base::Time(),
143 base::Time(), base::Time(), true, false, 142 base::Time(), true, false, net::CookieSameSite::DEFAULT_MODE,
144 net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT)); 143 net::COOKIE_PRIORITY_DEFAULT));
145 ASSERT_NE(nullptr, cookie2.get()); 144 ASSERT_NE(nullptr, cookie2.get());
146 EXPECT_EQ("https://helloworld.com/", 145 EXPECT_EQ("https://helloworld.com/",
147 cookies_helpers::GetURLFromCanonicalCookie(*cookie2).spec()); 146 cookies_helpers::GetURLFromCanonicalCookie(*cookie2).spec());
148 } 147 }
149 148
150 TEST_F(ExtensionCookiesTest, EmptyDictionary) { 149 TEST_F(ExtensionCookiesTest, EmptyDictionary) {
151 base::DictionaryValue dict; 150 base::DictionaryValue dict;
152 GetAll::Params::Details details; 151 GetAll::Params::Details details;
153 bool rv = GetAll::Params::Details::Populate(dict, &details); 152 bool rv = GetAll::Params::Details::Populate(dict, &details);
154 ASSERT_TRUE(rv); 153 ASSERT_TRUE(rv);
155 cookies_helpers::MatchFilter filter(&details); 154 cookies_helpers::MatchFilter filter(&details);
156 net::CanonicalCookie cookie; 155 net::CanonicalCookie cookie;
157 EXPECT_TRUE(filter.MatchesCookie(cookie)); 156 EXPECT_TRUE(filter.MatchesCookie(cookie));
158 } 157 }
159 158
160 TEST_F(ExtensionCookiesTest, DomainMatching) { 159 TEST_F(ExtensionCookiesTest, DomainMatching) {
161 const DomainMatchCase tests[] = { 160 const DomainMatchCase tests[] = {
162 {"bar.com", "http://bar.com", "", true}, 161 {"bar.com", "bar.com", true}, {".bar.com", "bar.com", true},
163 {".bar.com", "http://bar.com", "bar.com", true}, 162 {"bar.com", "food.bar.com", true}, {"bar.com", "bar.foo.com", false},
164 {"bar.com", "http://foo.bar.com", "", true}, 163 {".bar.com", ".foo.bar.com", true}, {".bar.com", "baz.foo.bar.com", true},
165 {"bar.com", "http://bar.foo.com", "", false}, 164 {"foo.bar.com", ".bar.com", false}};
166 {".bar.com", "http://foo.bar.com", ".foo.bar.com", true},
167 {".bar.com", "http://baz.foo.bar.com", "", true},
168 {"foo.bar.com", "http://bar.com", ".bar.com", false}};
169 165
170 for (size_t i = 0; i < arraysize(tests); ++i) { 166 for (size_t i = 0; i < arraysize(tests); ++i) {
171 // Build up the Params struct. 167 // Build up the Params struct.
172 base::ListValue args; 168 base::ListValue args;
173 auto dict = base::MakeUnique<base::DictionaryValue>(); 169 auto dict = base::MakeUnique<base::DictionaryValue>();
174 dict->SetString(keys::kDomainKey, std::string(tests[i].filter)); 170 dict->SetString(keys::kDomainKey, std::string(tests[i].filter));
175 args.Set(0, std::move(dict)); 171 args.Set(0, std::move(dict));
176 std::unique_ptr<GetAll::Params> params(GetAll::Params::Create(args)); 172 std::unique_ptr<GetAll::Params> params(GetAll::Params::Create(args));
177 173
178 cookies_helpers::MatchFilter filter(&params->details); 174 cookies_helpers::MatchFilter filter(&params->details);
179 std::unique_ptr<net::CanonicalCookie> cookie(net::CanonicalCookie::Create( 175 std::unique_ptr<net::CanonicalCookie> cookie(net::CanonicalCookie::Create(
180 GURL(tests[i].url), std::string(), std::string(), tests[i].domain, 176 "name", std::string(), tests[i].domain, "/", base::Time(), base::Time(),
181 std::string(), base::Time(), base::Time(), false, false, 177 base::Time(), false, false, net::CookieSameSite::DEFAULT_MODE,
182 net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT)); 178 net::COOKIE_PRIORITY_DEFAULT));
183 ASSERT_NE(nullptr, cookie.get()); 179 ASSERT_NE(nullptr, cookie.get());
184 EXPECT_EQ(tests[i].matches, filter.MatchesCookie(*cookie)); 180 EXPECT_EQ(tests[i].matches, filter.MatchesCookie(*cookie)) << " test " << i;
185 } 181 }
186 } 182 }
187 183
188 TEST_F(ExtensionCookiesTest, DecodeUTF8WithErrorHandling) { 184 TEST_F(ExtensionCookiesTest, DecodeUTF8WithErrorHandling) {
189 std::unique_ptr<net::CanonicalCookie> canonical_cookie( 185 std::unique_ptr<net::CanonicalCookie> canonical_cookie(
190 net::CanonicalCookie::Create(GURL("http://test.com"), 186 net::CanonicalCookie::Create(GURL("http://test.com"),
191 "=011Q255bNX_1!yd\203e+;path=/path\203", 187 "=011Q255bNX_1!yd\203e+;path=/path\203",
192 base::Time(), net::CookieOptions())); 188 base::Time(), net::CookieOptions()));
193 ASSERT_NE(nullptr, canonical_cookie.get()); 189 ASSERT_NE(nullptr, canonical_cookie.get());
194 Cookie cookie = 190 Cookie cookie =
195 cookies_helpers::CreateCookie(*canonical_cookie, "some cookie store"); 191 cookies_helpers::CreateCookie(*canonical_cookie, "some cookie store");
196 EXPECT_EQ(std::string("011Q255bNX_1!yd\xEF\xBF\xBD" 192 EXPECT_EQ(std::string("011Q255bNX_1!yd\xEF\xBF\xBD"
197 "e+"), 193 "e+"),
198 cookie.value); 194 cookie.value);
199 EXPECT_EQ(std::string(), cookie.path); 195 EXPECT_EQ(std::string(), cookie.path);
200 } 196 }
201 197
202 } // namespace extensions 198 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | components/signin/core/browser/gaia_cookie_manager_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698