| Index: chrome/browser/safe_browsing/protocol_manager_unittest.cc
|
| diff --git a/chrome/browser/safe_browsing/protocol_manager_unittest.cc b/chrome/browser/safe_browsing/protocol_manager_unittest.cc
|
| index 535af9696f628593dc04242bc57c3bdd655b2d87..3fcfe854f68fb082eed7988e69923d55c89133f3 100644
|
| --- a/chrome/browser/safe_browsing/protocol_manager_unittest.cc
|
| +++ b/chrome/browser/safe_browsing/protocol_manager_unittest.cc
|
| @@ -323,6 +323,137 @@ TEST_F(SafeBrowsingProtocolManagerTest, TestGetV4HashRequest) {
|
| pm->GetV4HashRequest(prefixes, API_ABUSE));
|
| }
|
|
|
| +TEST_F(SafeBrowsingProtocolManagerTest, TestParseV4HashResponse) {
|
| + scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL));
|
| +
|
| + FindFullHashesResponse res;
|
| + res.mutable_negative_cache_duration()->set_seconds(600);
|
| + ThreatMatch* m = res.add_matches();
|
| + m->set_threat_type(API_ABUSE);
|
| + m->set_platform_type(CHROME_PLATFORM);
|
| + m->set_threat_entry_type(URL_EXPRESSION);
|
| + m->mutable_cache_duration()->set_seconds(300);
|
| + m->mutable_threat()->set_hash(SBFullHashToString(
|
| + SBFullHashForString("Everything's shiny, Cap'n.")));
|
| + ThreatEntryMetadata::MetadataEntry* e =
|
| + m->mutable_threat_entry_metadata()->add_entries();
|
| + e->set_key("permission");
|
| + e->set_value("NOTIFICATIONS");
|
| +
|
| + // Serialize and Base64 encode.
|
| + std::string res_data, res_base64;
|
| + res.SerializeToString(&res_data);
|
| + base::Base64Encode(res_data, &res_base64);
|
| +
|
| + std::vector<SBFullHashResult> full_hashes;
|
| + base::TimeDelta cache_lifetime;
|
| + pm->ParseV4HashResponse(res_base64, &full_hashes, &cache_lifetime);
|
| +
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(600), cache_lifetime);
|
| + EXPECT_EQ(1ul, full_hashes.size());
|
| + EXPECT_TRUE(SBFullHashEqual(
|
| + SBFullHashForString("Everything's shiny, Cap'n."), full_hashes[0].hash));
|
| + EXPECT_EQ("NOTIFICATIONS,", full_hashes[0].metadata);
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(300), full_hashes[0].cache_duration);
|
| +}
|
| +
|
| +// Adds an entry with an ignored ThreatEntryType.
|
| +TEST_F(SafeBrowsingProtocolManagerTest,
|
| + TestParseV4HashResponseWrongThreatEntryType) {
|
| + scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL));
|
| +
|
| + FindFullHashesResponse res;
|
| + res.mutable_negative_cache_duration()->set_seconds(600);
|
| + res.add_matches()->set_threat_entry_type(BINARY_DIGEST);
|
| +
|
| + // Serialize and Base64 encode.
|
| + std::string res_data, res_base64;
|
| + res.SerializeToString(&res_data);
|
| + base::Base64Encode(res_data, &res_base64);
|
| +
|
| + std::vector<SBFullHashResult> full_hashes;
|
| + base::TimeDelta cache_lifetime;
|
| + pm->ParseV4HashResponse(res_base64, &full_hashes, &cache_lifetime);
|
| +
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(600), cache_lifetime);
|
| + // THere should be no hash results.
|
| + EXPECT_EQ(0ul, full_hashes.size());
|
| +}
|
| +
|
| +// Adds an entry with an SOCIAL_ENGINEERING threat type.
|
| +TEST_F(SafeBrowsingProtocolManagerTest,
|
| + TestParseV4HashResponseSocialEngineeringThreatType) {
|
| + scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL));
|
| +
|
| + FindFullHashesResponse res;
|
| + res.mutable_negative_cache_duration()->set_seconds(600);
|
| + ThreatMatch* m = res.add_matches();
|
| + m->set_threat_type(SOCIAL_ENGINEERING);
|
| + m->set_platform_type(CHROME_PLATFORM);
|
| + m->set_threat_entry_type(URL_EXPRESSION);
|
| + m->mutable_threat()->set_hash(
|
| + SBFullHashToString(SBFullHashForString("Not to fret.")));
|
| + ThreatEntryMetadata::MetadataEntry* e =
|
| + m->mutable_threat_entry_metadata()->add_entries();
|
| + e->set_key("permission");
|
| + e->set_value("IGNORED");
|
| +
|
| + // Serialize and Base64 encode.
|
| + std::string res_data, res_base64;
|
| + res.SerializeToString(&res_data);
|
| + base::Base64Encode(res_data, &res_base64);
|
| +
|
| + std::vector<SBFullHashResult> full_hashes;
|
| + base::TimeDelta cache_lifetime;
|
| + pm->ParseV4HashResponse(res_base64, &full_hashes, &cache_lifetime);
|
| +
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(600), cache_lifetime);
|
| + EXPECT_EQ(1ul, full_hashes.size());
|
| +
|
| + EXPECT_TRUE(SBFullHashEqual(
|
| + SBFullHashForString("Not to fret."), full_hashes[0].hash));
|
| + // Metadata should be empty.
|
| + EXPECT_EQ("", full_hashes[0].metadata);
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(0), full_hashes[0].cache_duration);
|
| +}
|
| +
|
| +// Adds metadata with a key value that is not "permission".
|
| +TEST_F(SafeBrowsingProtocolManagerTest,
|
| + TestParseV4HashResponseNonPermissionMetadata) {
|
| + scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL));
|
| +
|
| + FindFullHashesResponse res;
|
| + res.mutable_negative_cache_duration()->set_seconds(600);
|
| + ThreatMatch* m = res.add_matches();
|
| + m->set_threat_type(API_ABUSE);
|
| + m->set_platform_type(CHROME_PLATFORM);
|
| + m->set_threat_entry_type(URL_EXPRESSION);
|
| + m->mutable_threat()->set_hash(
|
| + SBFullHashToString(SBFullHashForString("Not to fret.")));
|
| + ThreatEntryMetadata::MetadataEntry* e =
|
| + m->mutable_threat_entry_metadata()->add_entries();
|
| + e->set_key("notpermission");
|
| + e->set_value("NOTGEOLOCATION");
|
| +
|
| + // Serialize and Base64 encode.
|
| + std::string res_data, res_base64;
|
| + res.SerializeToString(&res_data);
|
| + base::Base64Encode(res_data, &res_base64);
|
| +
|
| + std::vector<SBFullHashResult> full_hashes;
|
| + base::TimeDelta cache_lifetime;
|
| + pm->ParseV4HashResponse(res_base64, &full_hashes, &cache_lifetime);
|
| +
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(600), cache_lifetime);
|
| + EXPECT_EQ(1ul, full_hashes.size());
|
| +
|
| + EXPECT_TRUE(SBFullHashEqual(
|
| + SBFullHashForString("Not to fret."), full_hashes[0].hash));
|
| + // Metadata should be empty.
|
| + EXPECT_EQ("", full_hashes[0].metadata);
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(0), full_hashes[0].cache_duration);
|
| +}
|
| +
|
| TEST_F(SafeBrowsingProtocolManagerTest, TestUpdateUrl) {
|
| scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL));
|
|
|
|
|