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 <limits.h> | 5 #include <limits.h> |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 //------------------------------------------------------------------------------ | 22 //------------------------------------------------------------------------------ |
23 | 23 |
24 class SdchManagerTest : public testing::Test { | 24 class SdchManagerTest : public testing::Test { |
25 protected: | 25 protected: |
26 SdchManagerTest() | 26 SdchManagerTest() |
27 : sdch_manager_(new SdchManager) { | 27 : sdch_manager_(new SdchManager) { |
28 } | 28 } |
29 | 29 |
30 SdchManager* sdch_manager() { return sdch_manager_.get(); } | 30 SdchManager* sdch_manager() { return sdch_manager_.get(); } |
31 | 31 |
| 32 // Reset globals back to default state. |
| 33 virtual void TearDown() { |
| 34 SdchManager::EnableSdchSupport(true); |
| 35 SdchManager::EnableSecureSchemeSupport(false); |
| 36 } |
| 37 |
32 private: | 38 private: |
33 scoped_ptr<SdchManager> sdch_manager_; | 39 scoped_ptr<SdchManager> sdch_manager_; |
34 }; | 40 }; |
35 | 41 |
36 //------------------------------------------------------------------------------ | 42 //------------------------------------------------------------------------------ |
37 static std::string NewSdchDictionary(const std::string& domain) { | 43 static std::string NewSdchDictionary(const std::string& domain) { |
38 std::string dictionary; | 44 std::string dictionary; |
39 if (!domain.empty()) { | 45 if (!domain.empty()) { |
40 dictionary.append("Domain: "); | 46 dictionary.append("Domain: "); |
41 dictionary.append(domain); | 47 dictionary.append(domain); |
42 dictionary.append("\n"); | 48 dictionary.append("\n"); |
43 } | 49 } |
44 dictionary.append("\n"); | 50 dictionary.append("\n"); |
45 dictionary.append(kTestVcdiffDictionary, sizeof(kTestVcdiffDictionary) - 1); | 51 dictionary.append(kTestVcdiffDictionary, sizeof(kTestVcdiffDictionary) - 1); |
46 return dictionary; | 52 return dictionary; |
47 } | 53 } |
48 | 54 |
49 TEST_F(SdchManagerTest, DomainSupported) { | 55 TEST_F(SdchManagerTest, DomainSupported) { |
50 GURL google_url("http://www.google.com"); | 56 GURL google_url("http://www.google.com"); |
51 | 57 |
52 net::SdchManager::EnableSdchSupport(false); | 58 SdchManager::EnableSdchSupport(false); |
53 EXPECT_FALSE(sdch_manager()->IsInSupportedDomain(google_url)); | 59 EXPECT_FALSE(sdch_manager()->IsInSupportedDomain(google_url)); |
54 net::SdchManager::EnableSdchSupport(true); | 60 SdchManager::EnableSdchSupport(true); |
55 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(google_url)); | 61 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(google_url)); |
56 } | 62 } |
57 | 63 |
58 TEST_F(SdchManagerTest, DomainBlacklisting) { | 64 TEST_F(SdchManagerTest, DomainBlacklisting) { |
59 GURL test_url("http://www.test.com"); | 65 GURL test_url("http://www.test.com"); |
60 GURL google_url("http://www.google.com"); | 66 GURL google_url("http://www.google.com"); |
61 | 67 |
62 sdch_manager()->BlacklistDomain(test_url); | 68 sdch_manager()->BlacklistDomain(test_url); |
63 EXPECT_FALSE(sdch_manager()->IsInSupportedDomain(test_url)); | 69 EXPECT_FALSE(sdch_manager()->IsInSupportedDomain(test_url)); |
64 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(google_url)); | 70 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(google_url)); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 sdch_manager()->GetAvailDictionaryList( | 171 sdch_manager()->GetAvailDictionaryList( |
166 GURL("https://" + dictionary_domain + "/test"), | 172 GURL("https://" + dictionary_domain + "/test"), |
167 &dictionary_list); | 173 &dictionary_list); |
168 EXPECT_TRUE(dictionary_list.empty()); | 174 EXPECT_TRUE(dictionary_list.empty()); |
169 } | 175 } |
170 | 176 |
171 TEST_F(SdchManagerTest, CanUseHTTPSDictionaryOverHTTPSIfEnabled) { | 177 TEST_F(SdchManagerTest, CanUseHTTPSDictionaryOverHTTPSIfEnabled) { |
172 std::string dictionary_domain("x.y.z.google.com"); | 178 std::string dictionary_domain("x.y.z.google.com"); |
173 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); | 179 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); |
174 | 180 |
175 EXPECT_TRUE(sdch_manager()->AddSdchDictionary(dictionary_text, | 181 EXPECT_FALSE(sdch_manager()->AddSdchDictionary( |
176 GURL("https://" + dictionary_domain))); | 182 dictionary_text, GURL("https://" + dictionary_domain))); |
| 183 SdchManager::EnableSecureSchemeSupport(true); |
| 184 EXPECT_TRUE(sdch_manager()->AddSdchDictionary( |
| 185 dictionary_text, GURL("https://" + dictionary_domain))); |
177 | 186 |
178 GURL target_url("https://" + dictionary_domain + "/test"); | 187 GURL target_url("https://" + dictionary_domain + "/test"); |
179 std::string dictionary_list; | 188 std::string dictionary_list; |
180 // HTTPS target URL should advertise dictionary if secure scheme support is | 189 // HTTPS target URL should advertise dictionary if secure scheme support is |
181 // enabled. | 190 // enabled. |
182 sdch_manager()->EnableSecureSchemeSupport(true); | |
183 sdch_manager()->GetAvailDictionaryList(target_url, &dictionary_list); | 191 sdch_manager()->GetAvailDictionaryList(target_url, &dictionary_list); |
184 EXPECT_FALSE(dictionary_list.empty()); | 192 EXPECT_FALSE(dictionary_list.empty()); |
185 | 193 |
186 // Dictionary should be available. | 194 // Dictionary should be available. |
187 SdchManager::Dictionary* dictionary = NULL; | 195 SdchManager::Dictionary* dictionary = NULL; |
188 std::string client_hash; | 196 std::string client_hash; |
189 std::string server_hash; | 197 std::string server_hash; |
190 sdch_manager()->GenerateHash(dictionary_text, &client_hash, &server_hash); | 198 sdch_manager()->GenerateHash(dictionary_text, &client_hash, &server_hash); |
191 sdch_manager()->GetVcdiffDictionary(server_hash, target_url, &dictionary); | 199 sdch_manager()->GetVcdiffDictionary(server_hash, target_url, &dictionary); |
192 EXPECT_TRUE(dictionary != NULL); | 200 EXPECT_TRUE(dictionary != NULL); |
193 } | 201 } |
194 | 202 |
195 TEST_F(SdchManagerTest, CanNotUseHTTPDictionaryOverHTTPS) { | 203 TEST_F(SdchManagerTest, CanNotUseHTTPDictionaryOverHTTPS) { |
196 std::string dictionary_domain("x.y.z.google.com"); | 204 std::string dictionary_domain("x.y.z.google.com"); |
197 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); | 205 std::string dictionary_text(NewSdchDictionary(dictionary_domain)); |
198 | 206 |
199 EXPECT_TRUE(sdch_manager()->AddSdchDictionary(dictionary_text, | 207 EXPECT_TRUE(sdch_manager()->AddSdchDictionary(dictionary_text, |
200 GURL("http://" + dictionary_domain))); | 208 GURL("http://" + dictionary_domain))); |
201 | 209 |
202 GURL target_url("https://" + dictionary_domain + "/test"); | 210 GURL target_url("https://" + dictionary_domain + "/test"); |
203 std::string dictionary_list; | 211 std::string dictionary_list; |
204 // HTTPS target URL should not advertise dictionary acquired over HTTP even if | 212 // HTTPS target URL should not advertise dictionary acquired over HTTP even if |
205 // secure scheme support is enabled. | 213 // secure scheme support is enabled. |
206 sdch_manager()->EnableSecureSchemeSupport(true); | 214 SdchManager::EnableSecureSchemeSupport(true); |
207 sdch_manager()->GetAvailDictionaryList(target_url, &dictionary_list); | 215 sdch_manager()->GetAvailDictionaryList(target_url, &dictionary_list); |
208 EXPECT_TRUE(dictionary_list.empty()); | 216 EXPECT_TRUE(dictionary_list.empty()); |
209 | 217 |
210 SdchManager::Dictionary* dictionary = NULL; | 218 SdchManager::Dictionary* dictionary = NULL; |
211 std::string client_hash; | 219 std::string client_hash; |
212 std::string server_hash; | 220 std::string server_hash; |
213 sdch_manager()->GenerateHash(dictionary_text, &client_hash, &server_hash); | 221 sdch_manager()->GenerateHash(dictionary_text, &client_hash, &server_hash); |
214 sdch_manager()->GetVcdiffDictionary(server_hash, target_url, &dictionary); | 222 sdch_manager()->GetVcdiffDictionary(server_hash, target_url, &dictionary); |
215 EXPECT_TRUE(dictionary == NULL); | 223 EXPECT_TRUE(dictionary == NULL); |
216 } | 224 } |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 &dictionary); | 422 &dictionary); |
415 EXPECT_FALSE(dictionary); | 423 EXPECT_FALSE(dictionary); |
416 | 424 |
417 second_manager.GetVcdiffDictionary( | 425 second_manager.GetVcdiffDictionary( |
418 server_hash_1, | 426 server_hash_1, |
419 GURL("http://" + dictionary_domain_1 + "/random_url"), | 427 GURL("http://" + dictionary_domain_1 + "/random_url"), |
420 &dictionary); | 428 &dictionary); |
421 EXPECT_FALSE(dictionary); | 429 EXPECT_FALSE(dictionary); |
422 } | 430 } |
423 | 431 |
| 432 TEST_F(SdchManagerTest, HttpsCorrectlySupported) { |
| 433 GURL url("http://www.google.com"); |
| 434 GURL secure_url("https://www.google.com"); |
| 435 |
| 436 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(url)); |
| 437 EXPECT_FALSE(sdch_manager()->IsInSupportedDomain(secure_url)); |
| 438 |
| 439 SdchManager::EnableSecureSchemeSupport(true); |
| 440 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(url)); |
| 441 EXPECT_TRUE(sdch_manager()->IsInSupportedDomain(secure_url)); |
| 442 } |
| 443 |
424 } // namespace net | 444 } // namespace net |
425 | 445 |
OLD | NEW |