OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ios/net/cookies/system_cookie_util.h" | 5 #include "ios/net/cookies/system_cookie_util.h" |
6 | 6 |
7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
8 | 8 |
9 #include "base/mac/scoped_nsobject.h" | 9 #include "base/mac/scoped_nsobject.h" |
10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
12 #include "net/cookies/cookie_constants.h" | 12 #include "net/cookies/cookie_constants.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "testing/gtest_mac.h" | 14 #include "testing/gtest_mac.h" |
15 #include "url/gurl.h" | 15 #include "url/gurl.h" |
16 | 16 |
17 namespace net { | 17 namespace net { |
18 | 18 |
19 namespace { | 19 namespace { |
20 | 20 |
| 21 const char kCookieURL[] = "http://example.com"; |
21 const char kCookieDomain[] = "domain"; | 22 const char kCookieDomain[] = "domain"; |
22 const char kCookieName[] = "name"; | 23 const char kCookieName[] = "name"; |
23 const char kCookiePath[] = "path/"; | 24 const char kCookiePath[] = "path/"; |
24 const char kCookieValue[] = "value"; | 25 const char kCookieValue[] = "value"; |
25 const char kCookieValueInvalidUtf8[] = "\x81r\xe4\xbd\xa0\xe5\xa5\xbd"; | 26 const char kCookieValueInvalidUtf8[] = "\x81r\xe4\xbd\xa0\xe5\xa5\xbd"; |
26 | 27 |
27 void CheckSystemCookie(const base::Time& expires, bool secure, bool httponly) { | 28 void CheckSystemCookie(const base::Time& expires, bool secure, bool httponly) { |
28 // Generate a canonical cookie. | 29 // Generate a canonical cookie. |
29 net::CanonicalCookie canonical_cookie = net::CanonicalCookie( | 30 net::CanonicalCookie canonical_cookie = *net::CanonicalCookie::Create( |
30 GURL(), kCookieName, kCookieValue, kCookieDomain, kCookiePath, | 31 GURL(kCookieURL), kCookieName, kCookieValue, std::string(), kCookiePath, |
31 base::Time(), // creation | 32 base::Time(), // creation |
32 expires, | 33 expires, secure, httponly, net::CookieSameSite::DEFAULT_MODE, false, |
33 base::Time(), // last_access | |
34 secure, httponly, net::CookieSameSite::DEFAULT_MODE, | |
35 net::COOKIE_PRIORITY_DEFAULT); | 34 net::COOKIE_PRIORITY_DEFAULT); |
36 // Convert it to system cookie. | 35 // Convert it to system cookie. |
37 base::scoped_nsobject<NSHTTPCookie> system_cookie( | 36 base::scoped_nsobject<NSHTTPCookie> system_cookie( |
38 [SystemCookieFromCanonicalCookie(canonical_cookie) retain]); | 37 [SystemCookieFromCanonicalCookie(canonical_cookie) retain]); |
39 | 38 |
40 // Check the attributes. | 39 // Check the attributes. |
41 EXPECT_TRUE(system_cookie); | 40 EXPECT_TRUE(system_cookie); |
42 EXPECT_NSEQ(base::SysUTF8ToNSString(kCookieName), [system_cookie name]); | 41 EXPECT_NSEQ(base::SysUTF8ToNSString(kCookieName), [system_cookie name]); |
43 EXPECT_NSEQ(base::SysUTF8ToNSString(kCookieValue), [system_cookie value]); | 42 EXPECT_NSEQ(base::SysUTF8ToNSString(kCookieValue), [system_cookie value]); |
44 EXPECT_NSEQ(base::SysUTF8ToNSString(kCookieDomain), [system_cookie domain]); | 43 EXPECT_NSEQ(base::SysUTF8ToNSString(kCookieDomain), [system_cookie domain]); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 108 |
110 // Test various combinations of session, secure and httponly attributes. | 109 // Test various combinations of session, secure and httponly attributes. |
111 CheckSystemCookie(expire_date, false, false); | 110 CheckSystemCookie(expire_date, false, false); |
112 CheckSystemCookie(base::Time(), true, false); | 111 CheckSystemCookie(base::Time(), true, false); |
113 CheckSystemCookie(expire_date, false, true); | 112 CheckSystemCookie(expire_date, false, true); |
114 CheckSystemCookie(base::Time(), true, true); | 113 CheckSystemCookie(base::Time(), true, true); |
115 } | 114 } |
116 | 115 |
117 TEST(CookieUtil, SystemCookieFromBadCanonicalCookie) { | 116 TEST(CookieUtil, SystemCookieFromBadCanonicalCookie) { |
118 // Generate a bad canonical cookie (value is invalid utf8). | 117 // Generate a bad canonical cookie (value is invalid utf8). |
119 net::CanonicalCookie bad_canonical_cookie = net::CanonicalCookie( | 118 net::CanonicalCookie bad_canonical_cookie = *net::CanonicalCookie::Create( |
120 GURL(), kCookieName, kCookieValueInvalidUtf8, kCookieDomain, kCookiePath, | 119 GURL(kCookieURL), kCookieName, kCookieValueInvalidUtf8, std::string(), |
| 120 kCookiePath, |
121 base::Time(), // creation | 121 base::Time(), // creation |
122 base::Time(), // expires | 122 base::Time(), // expires |
123 base::Time(), // last_access | |
124 false, // secure | 123 false, // secure |
125 false, // httponly | 124 false, // httponly |
126 net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT); | 125 net::CookieSameSite::DEFAULT_MODE, false, net::COOKIE_PRIORITY_DEFAULT); |
127 // Convert it to system cookie. | 126 // Convert it to system cookie. |
128 base::scoped_nsobject<NSHTTPCookie> system_cookie( | 127 base::scoped_nsobject<NSHTTPCookie> system_cookie( |
129 [SystemCookieFromCanonicalCookie(bad_canonical_cookie) retain]); | 128 [SystemCookieFromCanonicalCookie(bad_canonical_cookie) retain]); |
130 EXPECT_TRUE(system_cookie == nil); | 129 EXPECT_TRUE(system_cookie == nil); |
131 } | 130 } |
132 | 131 |
133 } // namespace net | 132 } // namespace net |
OLD | NEW |