1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/safe_browsing/incident_reporting/tracked_preference_incident_handlers.h" 6 7#include "base/memory/scoped_ptr.h" 8#include "chrome/common/safe_browsing/csd.pb.h" 9#include "testing/gtest/include/gtest/gtest.h" 10 11namespace { 12 13scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> MakeIncident() { 14 scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident( 15 new safe_browsing::ClientIncidentReport_IncidentData); 16 17 incident->mutable_tracked_preference()->set_path("foo"); 18 incident->mutable_tracked_preference()->set_atomic_value("bar"); 19 incident->mutable_tracked_preference()->set_value_state( 20 safe_browsing:: 21 ClientIncidentReport_IncidentData_TrackedPreferenceIncident_ValueState_CLEARED); 22 return incident.Pass(); 23} 24 25} // namespace 26 27// Tests that GetKey returns the preference path. 28TEST(GetTrackedPreferenceIncidentKey, KeyIsPath) { 29 safe_browsing::ClientIncidentReport_IncidentData incident; 30 31 incident.mutable_tracked_preference()->set_path("foo"); 32 ASSERT_EQ(std::string("foo"), 33 safe_browsing::GetTrackedPreferenceIncidentKey(incident)); 34} 35 36// Tests that GetDigest returns the same value for the same incident. 37TEST(GetTrackedPreferenceIncidentDigest, SameIncidentSameDigest) { 38 scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident( 39 MakeIncident()); 40 41 uint32_t digest = 42 safe_browsing::GetTrackedPreferenceIncidentDigest(*incident); 43 ASSERT_EQ(digest, 44 safe_browsing::GetTrackedPreferenceIncidentDigest(*MakeIncident())); 45} 46 47// Tests that GetDigest returns the same value for the same incident. 48TEST(GetTrackedPreferenceIncidentDigest, DifferentIncidentDifferentDigest) { 49 scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident( 50 MakeIncident()); 51 52 uint32_t digest = 53 safe_browsing::GetTrackedPreferenceIncidentDigest(*incident); 54 55 scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident2( 56 MakeIncident()); 57 incident2->mutable_tracked_preference()->set_value_state( 58 safe_browsing:: 59 ClientIncidentReport_IncidentData_TrackedPreferenceIncident_ValueState_CHANGED); 60 61 ASSERT_NE(digest, 62 safe_browsing::GetTrackedPreferenceIncidentDigest(*incident2)); 63} 64