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

Side by Side Diff: chrome/browser/safe_browsing/protocol_manager_unittest.cc

Issue 2868030: Add switches and apis in safebrowsing code to allow tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 5
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/time.h" 7 #include "base/time.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "chrome/browser/safe_browsing/protocol_manager.h" 9 #include "chrome/browser/safe_browsing/protocol_manager.h"
10 10
11 using base::Time; 11 using base::Time;
12 using base::TimeDelta; 12 using base::TimeDelta;
13 13
14 static const char kInfoUrlPrefix[] = "http://info.prefix.com/foo";
15 static const char kMacKeyUrlPrefix[] = "https://key.prefix.com/bar";
16 static const char kClient[] = "unittest";
17 static const char kAppVer[] = "1.0";
18 static const char kClientKey[] = "SCg9lcLHd0dfksXgYsacwQ==";
19 static const char kWrappedKey[] =
20 "AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8nNaYH47tiQ7pDe9cEErjVHGZaPPUau5h61tbXSDqA"
21 "BiJZnDFByc_g8B5vTwxkhBf9g==";
22 static const char kAdditionalQuery[] = "&additional_query";
23
14 class SafeBrowsingProtocolManagerTest : public testing::Test { 24 class SafeBrowsingProtocolManagerTest : public testing::Test {
15 }; 25 };
16 26
17 // Ensure that we respect section 5 of the SafeBrowsing protocol specification. 27 // Ensure that we respect section 5 of the SafeBrowsing protocol specification.
18 TEST_F(SafeBrowsingProtocolManagerTest, TestBackOffTimes) { 28 TEST_F(SafeBrowsingProtocolManagerTest, TestBackOffTimes) {
19 SafeBrowsingProtocolManager pm(NULL, "", "", "", NULL); 29 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
30 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
20 pm.next_update_sec_ = 1800; 31 pm.next_update_sec_ = 1800;
21 DCHECK(pm.back_off_fuzz_ >= 0.0 && pm.back_off_fuzz_ <= 1.0); 32 DCHECK(pm.back_off_fuzz_ >= 0.0 && pm.back_off_fuzz_ <= 1.0);
22 33
23 // No errors received so far. 34 // No errors received so far.
24 EXPECT_EQ(pm.GetNextUpdateTime(false), 1800 * 1000); 35 EXPECT_EQ(pm.GetNextUpdateTime(false), 1800 * 1000);
25 36
26 // 1 error. 37 // 1 error.
27 EXPECT_EQ(pm.GetNextUpdateTime(true), 60 * 1000); 38 EXPECT_EQ(pm.GetNextUpdateTime(true), 60 * 1000);
28 39
29 // 2 errors. 40 // 2 errors.
(...skipping 17 matching lines...) Expand all
47 58
48 // 7 errors. 59 // 7 errors.
49 EXPECT_EQ(pm.GetNextUpdateTime(true), 480 * 60 * 1000); 60 EXPECT_EQ(pm.GetNextUpdateTime(true), 480 * 60 * 1000);
50 61
51 // Received a successful response. 62 // Received a successful response.
52 EXPECT_EQ(pm.GetNextUpdateTime(false), 1800 * 1000); 63 EXPECT_EQ(pm.GetNextUpdateTime(false), 1800 * 1000);
53 } 64 }
54 65
55 // Test string combinations with and without MAC. 66 // Test string combinations with and without MAC.
56 TEST_F(SafeBrowsingProtocolManagerTest, TestChunkStrings) { 67 TEST_F(SafeBrowsingProtocolManagerTest, TestChunkStrings) {
57 SafeBrowsingProtocolManager pm(NULL, "", "", "", NULL); 68 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
69 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
58 70
59 // Add and Sub chunks. 71 // Add and Sub chunks.
60 SBListChunkRanges phish("goog-phish-shavar"); 72 SBListChunkRanges phish("goog-phish-shavar");
61 phish.adds = "1,4,6,8-20,99"; 73 phish.adds = "1,4,6,8-20,99";
62 phish.subs = "16,32,64-96"; 74 phish.subs = "16,32,64-96";
63 EXPECT_EQ(pm.FormatList(phish, false), 75 EXPECT_EQ(pm.FormatList(phish, false),
64 "goog-phish-shavar;a:1,4,6,8-20,99:s:16,32,64-96\n"); 76 "goog-phish-shavar;a:1,4,6,8-20,99:s:16,32,64-96\n");
65 EXPECT_EQ(pm.FormatList(phish, true), 77 EXPECT_EQ(pm.FormatList(phish, true),
66 "goog-phish-shavar;a:1,4,6,8-20,99:s:16,32,64-96:mac\n"); 78 "goog-phish-shavar;a:1,4,6,8-20,99:s:16,32,64-96:mac\n");
67 79
(...skipping 12 matching lines...) Expand all
80 "goog-phish-shavar;s:16,32,64-96:mac\n"); 92 "goog-phish-shavar;s:16,32,64-96:mac\n");
81 93
82 // No chunks of either type. 94 // No chunks of either type.
83 phish.adds = ""; 95 phish.adds = "";
84 phish.subs = ""; 96 phish.subs = "";
85 EXPECT_EQ(pm.FormatList(phish, false), "goog-phish-shavar;\n"); 97 EXPECT_EQ(pm.FormatList(phish, false), "goog-phish-shavar;\n");
86 EXPECT_EQ(pm.FormatList(phish, true), "goog-phish-shavar;mac\n"); 98 EXPECT_EQ(pm.FormatList(phish, true), "goog-phish-shavar;mac\n");
87 } 99 }
88 100
89 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashBackOffTimes) { 101 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashBackOffTimes) {
90 SafeBrowsingProtocolManager pm(NULL, "", "", "", NULL); 102 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
103 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
91 104
92 // No errors or back off time yet. 105 // No errors or back off time yet.
93 EXPECT_EQ(pm.gethash_error_count_, 0); 106 EXPECT_EQ(pm.gethash_error_count_, 0);
94 EXPECT_TRUE(pm.next_gethash_time_.is_null()); 107 EXPECT_TRUE(pm.next_gethash_time_.is_null());
95 108
96 Time now = Time::Now(); 109 Time now = Time::Now();
97 110
98 // 1 error. 111 // 1 error.
99 pm.HandleGetHashError(now); 112 pm.HandleGetHashError(now);
100 EXPECT_EQ(pm.gethash_error_count_, 1); 113 EXPECT_EQ(pm.gethash_error_count_, 1);
(...skipping 29 matching lines...) Expand all
130 // 6 errors, reached max backoff. 143 // 6 errors, reached max backoff.
131 pm.HandleGetHashError(now); 144 pm.HandleGetHashError(now);
132 EXPECT_EQ(pm.gethash_error_count_, 6); 145 EXPECT_EQ(pm.gethash_error_count_, 6);
133 EXPECT_TRUE(pm.next_gethash_time_ == now + TimeDelta::FromMinutes(480)); 146 EXPECT_TRUE(pm.next_gethash_time_ == now + TimeDelta::FromMinutes(480));
134 147
135 // 7 errors. 148 // 7 errors.
136 pm.HandleGetHashError(now); 149 pm.HandleGetHashError(now);
137 EXPECT_EQ(pm.gethash_error_count_, 7); 150 EXPECT_EQ(pm.gethash_error_count_, 7);
138 EXPECT_TRUE(pm.next_gethash_time_== now + TimeDelta::FromMinutes(480)); 151 EXPECT_TRUE(pm.next_gethash_time_== now + TimeDelta::FromMinutes(480));
139 } 152 }
153
154 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashUrl) {
155 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
156 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
157 pm.version_ = kAppVer;
158 EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&"
159 "pver=2.2", pm.GetHashUrl(false).spec());
160 EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&"
161 "pver=2.2&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8nNaYH47tiQ7pDe9cE"
162 "ErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf9g==",
163 pm.GetHashUrl(true).spec());
164
165 pm.set_additional_query("&additional_query");
166 EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&"
167 "pver=2.2&additional_query",
168 pm.GetHashUrl(false).spec());
169 EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&"
170 "pver=2.2&additional_query&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8"
171 "nNaYH47tiQ7pDe9cEErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf"
172 "9g==", pm.GetHashUrl(true).spec());
173 }
174
175 TEST_F(SafeBrowsingProtocolManagerTest, TestUpdateUrl) {
176 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
177 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
178 pm.version_ = kAppVer;
179
180 EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&"
181 "pver=2.2", pm.UpdateUrl(false).spec());
182 EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&"
183 "pver=2.2&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8nNaYH47tiQ7pDe9cE"
184 "ErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf9g==",
185 pm.UpdateUrl(true).spec());
186
187 pm.set_additional_query("&additional_query");
188 EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&"
189 "pver=2.2&additional_query", pm.UpdateUrl(false).spec());
190 EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&"
191 "pver=2.2&additional_query&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8"
192 "nNaYH47tiQ7pDe9cEErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf"
193 "9g==", pm.UpdateUrl(true).spec());
194 }
195
196 TEST_F(SafeBrowsingProtocolManagerTest, TestMalwareReportUrl) {
197 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
198 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
199 pm.version_ = kAppVer;
200
201 GURL malware_url("http://malware.url.com");
202 GURL page_url("http://page.url.com");
203 GURL referrer_url("http://referrer.url.com");
204 EXPECT_EQ("http://info.prefix.com/foo/report?client=unittest&appver=1.0&"
205 "pver=2.2&evts=malblhit&evtd=http%3A%2F%2Fmalware.url.com%2F&"
206 "evtr=http%3A%2F%2Fpage.url.com%2F&evhr=http%3A%2F%2Freferrer."
207 "url.com%2F",
208 pm.MalwareReportUrl(malware_url, page_url, referrer_url).spec());
209
210 pm.set_additional_query("&additional_query");
211 EXPECT_EQ("http://info.prefix.com/foo/report?client=unittest&appver=1.0&"
212 "pver=2.2&additional_query&evts=malblhit&"
213 "evtd=http%3A%2F%2Fmalware.url.com%2F&"
214 "evtr=http%3A%2F%2Fpage.url.com%2F&evhr=http%3A%2F%2Freferrer."
215 "url.com%2F",
216 pm.MalwareReportUrl(malware_url, page_url, referrer_url).spec());
217 }
218
219 TEST_F(SafeBrowsingProtocolManagerTest, TestMacKeyUrl) {
220 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
221 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
222 pm.version_ = kAppVer;
223
224 EXPECT_EQ("https://key.prefix.com/bar/newkey?client=unittest&appver=1.0&"
225 "pver=2.2", pm.MacKeyUrl().spec());
226
227 pm.set_additional_query("&additional_query");
228 EXPECT_EQ("https://key.prefix.com/bar/newkey?client=unittest&appver=1.0&"
229 "pver=2.2&additional_query", pm.MacKeyUrl().spec());
230 }
231
232 TEST_F(SafeBrowsingProtocolManagerTest, TestNextChunkUrl) {
233 SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL,
234 kInfoUrlPrefix, kMacKeyUrlPrefix, false);
235 pm.version_ = kAppVer;
236
237 std::string url_partial = "localhost:1234/foo/bar?foo";
238 std::string url_http_full = "http://localhost:1234/foo/bar?foo";
239 std::string url_https_full = "https://localhost:1234/foo/bar?foo";
240
241 EXPECT_EQ("http://localhost:1234/foo/bar?foo",
242 pm.NextChunkUrl(url_partial).spec());
243 EXPECT_EQ("http://localhost:1234/foo/bar?foo",
244 pm.NextChunkUrl(url_http_full).spec());
245 EXPECT_EQ("https://localhost:1234/foo/bar?foo",
246 pm.NextChunkUrl(url_https_full).spec());
247
248 pm.set_additional_query("&additional_query");
249 EXPECT_EQ("http://localhost:1234/foo/bar?foo&additional_query",
250 pm.NextChunkUrl(url_partial).spec());
251 EXPECT_EQ("http://localhost:1234/foo/bar?foo&additional_query",
252 pm.NextChunkUrl(url_http_full).spec());
253 EXPECT_EQ("https://localhost:1234/foo/bar?foo&additional_query",
254 pm.NextChunkUrl(url_https_full).spec());
255 }
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/protocol_manager.cc ('k') | chrome/browser/safe_browsing/safe_browsing_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698