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

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

Issue 7792004: Parse the whitelist expressions from the phishing verdict response if (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <map> 5 #include <map>
6 #include <queue> 6 #include <queue>
7 #include <string> 7 #include <string>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 ClientPhishingResponse response; 344 ClientPhishingResponse response;
345 response.set_phishy(true); 345 response.set_phishy(true);
346 SetClientReportPhishingResponse(response.SerializeAsString(), 346 SetClientReportPhishingResponse(response.SerializeAsString(),
347 true /* success */); 347 true /* success */);
348 EXPECT_TRUE(SendClientReportPhishingRequest(url, score)); 348 EXPECT_TRUE(SendClientReportPhishingRequest(url, score));
349 349
350 // This request will fail 350 // This request will fail
351 GURL second_url("http://b.com/"); 351 GURL second_url("http://b.com/");
352 response.set_phishy(false); 352 response.set_phishy(false);
353 SetClientReportPhishingResponse(response.SerializeAsString(), 353 SetClientReportPhishingResponse(response.SerializeAsString(),
354 false /* success*/); 354 false /* success */);
355 EXPECT_FALSE(SendClientReportPhishingRequest(second_url, score)); 355 EXPECT_FALSE(SendClientReportPhishingRequest(second_url, score));
356 356
357 // This is a false positive.
358 response.set_phishy(true);
359 response.add_whitelist_expression("c.com/a.html");
360 SetClientReportPhishingResponse(response.SerializeAsString(),
361 true /* success */);
362 GURL third_url("http://c.com/");
363 EXPECT_FALSE(SendClientReportPhishingRequest(third_url, score));
364
357 base::Time after = base::Time::Now(); 365 base::Time after = base::Time::Now();
358 366
359 // Check that we have recorded all 3 requests within the correct time range. 367 // Check that we have recorded all 4 requests within the correct time range.
360 std::queue<base::Time>& report_times = GetPhishingReportTimes(); 368 std::queue<base::Time>& report_times = GetPhishingReportTimes();
361 EXPECT_EQ(3U, report_times.size()); 369 EXPECT_EQ(4U, report_times.size());
362 while (!report_times.empty()) { 370 while (!report_times.empty()) {
363 base::Time time = report_times.back(); 371 base::Time time = report_times.back();
364 report_times.pop(); 372 report_times.pop();
365 EXPECT_LE(before, time); 373 EXPECT_LE(before, time);
366 EXPECT_GE(after, time); 374 EXPECT_GE(after, time);
367 } 375 }
368 376
369 // Only the first url should be in the cache. 377 // Only the first url should be in the cache.
370 bool is_phishing; 378 bool is_phishing;
371 EXPECT_TRUE(csd_service_->IsInCache(url)); 379 EXPECT_TRUE(csd_service_->IsInCache(url));
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 sanitized_request.non_model_feature_map(i).value()) 752 sanitized_request.non_model_feature_map(i).value())
745 << "Non-model feature " << i; 753 << "Non-model feature " << i;
746 } 754 }
747 755
748 // Also check the serialized forms in case there's a field that we forget 756 // Also check the serialized forms in case there's a field that we forget
749 // to add above. 757 // to add above.
750 EXPECT_EQ(expected.SerializeAsString(), 758 EXPECT_EQ(expected.SerializeAsString(),
751 sanitized_request.SerializeAsString()); 759 sanitized_request.SerializeAsString());
752 } 760 }
753 761
762 TEST_F(ClientSideDetectionServiceTest, IsFalsePositiveResponse) {
763 GURL url("http://www.google.com/");
764 ClientPhishingResponse response;
765
766 // If the response is not phishing is should never be a false positive.
767 response.set_phishy(false);
768 response.add_whitelist_expression("www.google.com/");
769 EXPECT_FALSE(ClientSideDetectionService::IsFalsePositiveResponse(
770 url, response));
771
772 // If there are no entries in the whitelist it should always return false.
773 response.clear_whitelist_expression();
774 response.set_phishy(true);
775 EXPECT_FALSE(ClientSideDetectionService::IsFalsePositiveResponse(
776 url, response));
777
778 // If the URL doesn't match any whitelist entries it whould return false.
779 response.add_whitelist_expression("www.yahoo.com/");
780 EXPECT_FALSE(ClientSideDetectionService::IsFalsePositiveResponse(
781 url, response));
782
783 // If the URL matches the whitelist it should return true.
784 response.add_whitelist_expression("google.com/");
785 EXPECT_TRUE(ClientSideDetectionService::IsFalsePositiveResponse(
786 url, response));
787
788 // If an entry in the whitelist matches the URL it should return true.
789 response.clear_whitelist_expression();
790 response.add_whitelist_expression("www.google.com/a/b.html");
791 EXPECT_TRUE(ClientSideDetectionService::IsFalsePositiveResponse(
792 url, response));
mattm 2011/08/30 02:23:09 The whitelist matching against the URL seems a bit
noelutz 2011/08/30 16:45:12 This whitelist works in two ways. I.e., if we 'cl
793 }
754 } // namespace safe_browsing 794 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698