cloned_install_detector_unittest.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/metrics/cloned_install_detector.h"
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/prefs/testing_pref_service.h"
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/metrics/metrics_state_manager.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/metrics/machine_id_provider.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/metrics/metrics_pref_names.h"
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace metrics {
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace {
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochconst std::string kTestRawId = "test";
18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Hashed machine id for |kTestRawId|.
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochconst int kTestHashedId = 2216819;
20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// TODO(jwd): Change these test to test the full flow and histogram outputs. It
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// should also remove the need to make the test a friend of
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// ClonedInstallDetector.
26effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST(ClonedInstallDetectorTest, SaveId) {
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  TestingPrefServiceSimple prefs;
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ClonedInstallDetector::RegisterPrefs(prefs.registry());
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  scoped_ptr<ClonedInstallDetector> detector(
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new ClonedInstallDetector(MachineIdProvider::CreateInstance()));
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  detector->SaveMachineId(&prefs, kTestRawId);
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  EXPECT_EQ(kTestHashedId, prefs.GetInteger(prefs::kMetricsMachineId));
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
38effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST(ClonedInstallDetectorTest, DetectClone) {
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  TestingPrefServiceSimple prefs;
40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  MetricsStateManager::RegisterPrefs(prefs.registry());
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Save a machine id that will cause a clone to be detected.
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  prefs.SetInteger(prefs::kMetricsMachineId, kTestHashedId + 1);
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  scoped_ptr<ClonedInstallDetector> detector(
46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      new ClonedInstallDetector(MachineIdProvider::CreateInstance()));
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  detector->SaveMachineId(&prefs, kTestRawId);
49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  EXPECT_TRUE(prefs.GetBoolean(prefs::kMetricsResetIds));
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace metrics
54