11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/safe_browsing/incident_reporting/blacklist_load_incident_handlers.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/scoped_ptr.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/safe_browsing/csd.pb.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "testing/gtest/include/gtest/gtest.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace {
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> MakeIncident() {
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident(
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new safe_browsing::ClientIncidentReport_IncidentData);
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  incident->mutable_blacklist_load()->set_path("foo");
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return incident.Pass();
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Tests that GetKey returns the dll path.
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST(GetBlacklistLoadIncidentKey, KeyIsPath) {
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  safe_browsing::ClientIncidentReport_IncidentData incident;
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  incident.mutable_blacklist_load()->set_path("foo");
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_EQ(std::string("foo"),
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            safe_browsing::GetBlacklistLoadIncidentKey(incident));
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Tests that GetDigest returns the same value for the same incident.
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST(GetBlacklistLoadIncidentDigest, SameIncidentSameDigest) {
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident(
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      MakeIncident());
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  uint32_t digest = safe_browsing::GetBlacklistLoadIncidentDigest(*incident);
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_EQ(digest,
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            safe_browsing::GetBlacklistLoadIncidentDigest(*MakeIncident()));
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Tests that GetDigest returns different values for different incidents.
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST(GetBlacklistLoadIncidentDigest, DifferentIncidentDifferentDigest) {
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident(
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      MakeIncident());
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<safe_browsing::ClientDownloadRequest_Digests> digest_proto(
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new safe_browsing::ClientDownloadRequest_Digests);
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  digest_proto->set_sha256("37");
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  incident->mutable_blacklist_load()->set_allocated_digest(
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      digest_proto.release());
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<safe_browsing::ClientIncidentReport_IncidentData> incident2(
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      MakeIncident());
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<safe_browsing::ClientDownloadRequest_Digests> digest_proto2(
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new safe_browsing::ClientDownloadRequest_Digests);
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  digest_proto2->set_sha256("42");
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  incident2->mutable_blacklist_load()->set_allocated_digest(
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      digest_proto2.release());
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ASSERT_NE(safe_browsing::GetBlacklistLoadIncidentDigest(*incident),
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            safe_browsing::GetBlacklistLoadIncidentDigest(*incident2));
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
62