| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/safe_browsing/browser_feature_extractor.h" | 5 #include "chrome/browser/safe_browsing/browser_feature_extractor.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 "http://www.good.com/"))); | 592 "http://www.good.com/"))); |
| 593 EXPECT_DOUBLE_EQ(1.0, features[features::kSafeBrowsingIsSubresource]); | 593 EXPECT_DOUBLE_EQ(1.0, features[features::kSafeBrowsingIsSubresource]); |
| 594 EXPECT_DOUBLE_EQ(2.0, features[features::kSafeBrowsingThreatType]); | 594 EXPECT_DOUBLE_EQ(2.0, features[features::kSafeBrowsingThreatType]); |
| 595 } | 595 } |
| 596 | 596 |
| 597 TEST_F(BrowserFeatureExtractorTest, MalwareFeatures) { | 597 TEST_F(BrowserFeatureExtractorTest, MalwareFeatures) { |
| 598 ClientMalwareRequest request; | 598 ClientMalwareRequest request; |
| 599 request.set_url("http://www.foo.com/"); | 599 request.set_url("http://www.foo.com/"); |
| 600 | 600 |
| 601 std::vector<IPUrlInfo> bad_urls; | 601 std::vector<IPUrlInfo> bad_urls; |
| 602 bad_urls.push_back(IPUrlInfo("http://bad.com", "GET", "", | 602 bad_urls.push_back( |
| 603 ResourceType::SCRIPT)); | 603 IPUrlInfo("http://bad.com", "GET", "", content::RESOURCE_TYPE_SCRIPT)); |
| 604 bad_urls.push_back(IPUrlInfo("http://evil.com", "GET", "", | 604 bad_urls.push_back( |
| 605 ResourceType::SCRIPT)); | 605 IPUrlInfo("http://evil.com", "GET", "", content::RESOURCE_TYPE_SCRIPT)); |
| 606 browse_info_->ips.insert(std::make_pair("193.5.163.8", bad_urls)); | 606 browse_info_->ips.insert(std::make_pair("193.5.163.8", bad_urls)); |
| 607 browse_info_->ips.insert(std::make_pair("92.92.92.92", bad_urls)); | 607 browse_info_->ips.insert(std::make_pair("92.92.92.92", bad_urls)); |
| 608 std::vector<IPUrlInfo> good_urls; | 608 std::vector<IPUrlInfo> good_urls; |
| 609 good_urls.push_back(IPUrlInfo("http://ok.com", "GET", "", | 609 good_urls.push_back( |
| 610 ResourceType::SCRIPT)); | 610 IPUrlInfo("http://ok.com", "GET", "", content::RESOURCE_TYPE_SCRIPT)); |
| 611 browse_info_->ips.insert(std::make_pair("23.94.78.1", good_urls)); | 611 browse_info_->ips.insert(std::make_pair("23.94.78.1", good_urls)); |
| 612 EXPECT_CALL(*db_manager_, MatchMalwareIP("193.5.163.8")) | 612 EXPECT_CALL(*db_manager_, MatchMalwareIP("193.5.163.8")) |
| 613 .WillOnce(Return(true)); | 613 .WillOnce(Return(true)); |
| 614 EXPECT_CALL(*db_manager_, MatchMalwareIP("92.92.92.92")) | 614 EXPECT_CALL(*db_manager_, MatchMalwareIP("92.92.92.92")) |
| 615 .WillOnce(Return(true)); | 615 .WillOnce(Return(true)); |
| 616 EXPECT_CALL(*db_manager_, MatchMalwareIP("23.94.78.1")) | 616 EXPECT_CALL(*db_manager_, MatchMalwareIP("23.94.78.1")) |
| 617 .WillOnce(Return(false)); | 617 .WillOnce(Return(false)); |
| 618 | 618 |
| 619 ExtractMalwareFeatures(&request); | 619 ExtractMalwareFeatures(&request); |
| 620 EXPECT_EQ(4, request.bad_ip_url_info_size()); | 620 EXPECT_EQ(4, request.bad_ip_url_info_size()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 632 EXPECT_EQ(2U, urls.size()); | 632 EXPECT_EQ(2U, urls.size()); |
| 633 EXPECT_TRUE(urls.find("http://bad.com") != urls.end()); | 633 EXPECT_TRUE(urls.find("http://bad.com") != urls.end()); |
| 634 EXPECT_TRUE(urls.find("http://evil.com") != urls.end()); | 634 EXPECT_TRUE(urls.find("http://evil.com") != urls.end()); |
| 635 } | 635 } |
| 636 | 636 |
| 637 TEST_F(BrowserFeatureExtractorTest, MalwareFeatures_ExceedLimit) { | 637 TEST_F(BrowserFeatureExtractorTest, MalwareFeatures_ExceedLimit) { |
| 638 ClientMalwareRequest request; | 638 ClientMalwareRequest request; |
| 639 request.set_url("http://www.foo.com/"); | 639 request.set_url("http://www.foo.com/"); |
| 640 | 640 |
| 641 std::vector<IPUrlInfo> bad_urls; | 641 std::vector<IPUrlInfo> bad_urls; |
| 642 bad_urls.push_back(IPUrlInfo("http://bad.com", "GET", "", | 642 bad_urls.push_back( |
| 643 ResourceType::SCRIPT)); | 643 IPUrlInfo("http://bad.com", "GET", "", content::RESOURCE_TYPE_SCRIPT)); |
| 644 std::vector<std::string> ips; | 644 std::vector<std::string> ips; |
| 645 for (int i = 0; i < 7; ++i) { // Add 7 ips | 645 for (int i = 0; i < 7; ++i) { // Add 7 ips |
| 646 std::string ip = base::StringPrintf("%d.%d.%d.%d", i, i, i, i); | 646 std::string ip = base::StringPrintf("%d.%d.%d.%d", i, i, i, i); |
| 647 ips.push_back(ip); | 647 ips.push_back(ip); |
| 648 browse_info_->ips.insert(std::make_pair(ip, bad_urls)); | 648 browse_info_->ips.insert(std::make_pair(ip, bad_urls)); |
| 649 | 649 |
| 650 // First ip is good but all the others are bad. | 650 // First ip is good but all the others are bad. |
| 651 EXPECT_CALL(*db_manager_, MatchMalwareIP(ip)).WillOnce(Return(i > 0)); | 651 EXPECT_CALL(*db_manager_, MatchMalwareIP(ip)).WillOnce(Return(i > 0)); |
| 652 } | 652 } |
| 653 | 653 |
| 654 ExtractMalwareFeatures(&request); | 654 ExtractMalwareFeatures(&request); |
| 655 // The number of IP matched url we store is capped at 5 IPs per request. | 655 // The number of IP matched url we store is capped at 5 IPs per request. |
| 656 EXPECT_EQ(5, request.bad_ip_url_info_size()); | 656 EXPECT_EQ(5, request.bad_ip_url_info_size()); |
| 657 } | 657 } |
| 658 | 658 |
| 659 } // namespace safe_browsing | 659 } // namespace safe_browsing |
| OLD | NEW |