Index: chrome/browser/safe_browsing/protocol_manager_unittest.cc |
=================================================================== |
--- chrome/browser/safe_browsing/protocol_manager_unittest.cc (revision 51059) |
+++ chrome/browser/safe_browsing/protocol_manager_unittest.cc (working copy) |
@@ -11,12 +11,23 @@ |
using base::Time; |
using base::TimeDelta; |
+static const char kInfoUrlPrefix[] = "http://info.prefix.com/foo"; |
+static const char kMacKeyUrlPrefix[] = "https://key.prefix.com/bar"; |
+static const char kClient[] = "unittest"; |
+static const char kAppVer[] = "1.0"; |
+static const char kClientKey[] = "SCg9lcLHd0dfksXgYsacwQ=="; |
+static const char kWrappedKey[] = |
+ "AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8nNaYH47tiQ7pDe9cEErjVHGZaPPUau5h61tbXSDqA" |
+ "BiJZnDFByc_g8B5vTwxkhBf9g=="; |
+static const char kAdditionalQuery[] = "&additional_query"; |
+ |
class SafeBrowsingProtocolManagerTest : public testing::Test { |
}; |
// Ensure that we respect section 5 of the SafeBrowsing protocol specification. |
TEST_F(SafeBrowsingProtocolManagerTest, TestBackOffTimes) { |
- SafeBrowsingProtocolManager pm(NULL, "", "", "", NULL); |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
pm.next_update_sec_ = 1800; |
DCHECK(pm.back_off_fuzz_ >= 0.0 && pm.back_off_fuzz_ <= 1.0); |
@@ -54,7 +65,8 @@ |
// Test string combinations with and without MAC. |
TEST_F(SafeBrowsingProtocolManagerTest, TestChunkStrings) { |
- SafeBrowsingProtocolManager pm(NULL, "", "", "", NULL); |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
// Add and Sub chunks. |
SBListChunkRanges phish("goog-phish-shavar"); |
@@ -87,7 +99,8 @@ |
} |
TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashBackOffTimes) { |
- SafeBrowsingProtocolManager pm(NULL, "", "", "", NULL); |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
// No errors or back off time yet. |
EXPECT_EQ(pm.gethash_error_count_, 0); |
@@ -137,3 +150,106 @@ |
EXPECT_EQ(pm.gethash_error_count_, 7); |
EXPECT_TRUE(pm.next_gethash_time_== now + TimeDelta::FromMinutes(480)); |
} |
+ |
+TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashUrl) { |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
+ pm.version_ = kAppVer; |
+ EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&" |
+ "pver=2.2", pm.GetHashUrl(false).spec()); |
+ EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&" |
+ "pver=2.2&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8nNaYH47tiQ7pDe9cE" |
+ "ErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf9g==", |
+ pm.GetHashUrl(true).spec()); |
+ |
+ pm.set_additional_query("&additional_query"); |
+ EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&" |
+ "pver=2.2&additional_query", |
+ pm.GetHashUrl(false).spec()); |
+ EXPECT_EQ("http://info.prefix.com/foo/gethash?client=unittest&appver=1.0&" |
+ "pver=2.2&additional_query&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8" |
+ "nNaYH47tiQ7pDe9cEErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf" |
+ "9g==", pm.GetHashUrl(true).spec()); |
+} |
+ |
+TEST_F(SafeBrowsingProtocolManagerTest, TestUpdateUrl) { |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
+ pm.version_ = kAppVer; |
+ |
+ EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&" |
+ "pver=2.2", pm.UpdateUrl(false).spec()); |
+ EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&" |
+ "pver=2.2&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8nNaYH47tiQ7pDe9cE" |
+ "ErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf9g==", |
+ pm.UpdateUrl(true).spec()); |
+ |
+ pm.set_additional_query("&additional_query"); |
+ EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&" |
+ "pver=2.2&additional_query", pm.UpdateUrl(false).spec()); |
+ EXPECT_EQ("http://info.prefix.com/foo/downloads?client=unittest&appver=1.0&" |
+ "pver=2.2&additional_query&wrkey=AKEgNisjLl7iRYrjWHmpd_XwCiilxrw8" |
+ "nNaYH47tiQ7pDe9cEErjVHGZaPPUau5h61tbXSDqABiJZnDFByc_g8B5vTwxkhBf" |
+ "9g==", pm.UpdateUrl(true).spec()); |
+} |
+ |
+TEST_F(SafeBrowsingProtocolManagerTest, TestMalwareReportUrl) { |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
+ pm.version_ = kAppVer; |
+ |
+ GURL malware_url("http://malware.url.com"); |
+ GURL page_url("http://page.url.com"); |
+ GURL referrer_url("http://referrer.url.com"); |
+ EXPECT_EQ("http://info.prefix.com/foo/report?client=unittest&appver=1.0&" |
+ "pver=2.2&evts=malblhit&evtd=http%3A%2F%2Fmalware.url.com%2F&" |
+ "evtr=http%3A%2F%2Fpage.url.com%2F&evhr=http%3A%2F%2Freferrer." |
+ "url.com%2F", |
+ pm.MalwareReportUrl(malware_url, page_url, referrer_url).spec()); |
+ |
+ pm.set_additional_query("&additional_query"); |
+ EXPECT_EQ("http://info.prefix.com/foo/report?client=unittest&appver=1.0&" |
+ "pver=2.2&additional_query&evts=malblhit&" |
+ "evtd=http%3A%2F%2Fmalware.url.com%2F&" |
+ "evtr=http%3A%2F%2Fpage.url.com%2F&evhr=http%3A%2F%2Freferrer." |
+ "url.com%2F", |
+ pm.MalwareReportUrl(malware_url, page_url, referrer_url).spec()); |
+} |
+ |
+TEST_F(SafeBrowsingProtocolManagerTest, TestMacKeyUrl) { |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
+ pm.version_ = kAppVer; |
+ |
+ EXPECT_EQ("https://key.prefix.com/bar/newkey?client=unittest&appver=1.0&" |
+ "pver=2.2", pm.MacKeyUrl().spec()); |
+ |
+ pm.set_additional_query("&additional_query"); |
+ EXPECT_EQ("https://key.prefix.com/bar/newkey?client=unittest&appver=1.0&" |
+ "pver=2.2&additional_query", pm.MacKeyUrl().spec()); |
+} |
+ |
+TEST_F(SafeBrowsingProtocolManagerTest, TestNextChunkUrl) { |
+ SafeBrowsingProtocolManager pm(NULL, kClient, kClientKey, kWrappedKey, NULL, |
+ kInfoUrlPrefix, kMacKeyUrlPrefix, false); |
+ pm.version_ = kAppVer; |
+ |
+ std::string url_partial = "localhost:1234/foo/bar?foo"; |
+ std::string url_http_full = "http://localhost:1234/foo/bar?foo"; |
+ std::string url_https_full = "https://localhost:1234/foo/bar?foo"; |
+ |
+ EXPECT_EQ("http://localhost:1234/foo/bar?foo", |
+ pm.NextChunkUrl(url_partial).spec()); |
+ EXPECT_EQ("http://localhost:1234/foo/bar?foo", |
+ pm.NextChunkUrl(url_http_full).spec()); |
+ EXPECT_EQ("https://localhost:1234/foo/bar?foo", |
+ pm.NextChunkUrl(url_https_full).spec()); |
+ |
+ pm.set_additional_query("&additional_query"); |
+ EXPECT_EQ("http://localhost:1234/foo/bar?foo&additional_query", |
+ pm.NextChunkUrl(url_partial).spec()); |
+ EXPECT_EQ("http://localhost:1234/foo/bar?foo&additional_query", |
+ pm.NextChunkUrl(url_http_full).spec()); |
+ EXPECT_EQ("https://localhost:1234/foo/bar?foo&additional_query", |
+ pm.NextChunkUrl(url_https_full).spec()); |
+} |