kiosk_mode_settings_unittest.cc revision 9ab5563a3196760eb381d102cbb2bc0f7abc6a50
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
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
6
7#include "base/bind.h"
8#include "base/bind_helpers.h"
9#include "base/message_loop/message_loop.h"
10#include "base/values.h"
11#include "chrome/browser/chromeos/settings/cros_settings.h"
12#include "chrome/browser/chromeos/settings/cros_settings_names.h"
13#include "chrome/browser/chromeos/settings/device_settings_service.h"
14#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
15#include "content/public/test/test_browser_thread.h"
16#include "testing/gtest/include/gtest/gtest.h"
17
18namespace {
19
20const int kFudgeInt = 100;
21
22}
23
24namespace chromeos {
25
26class KioskModeSettingsTest : public testing::Test {
27 protected:
28  KioskModeSettingsTest()
29      : message_loop_(base::MessageLoop::TYPE_UI),
30        ui_thread_(content::BrowserThread::UI, &message_loop_),
31        file_thread_(content::BrowserThread::FILE, &message_loop_) {
32    CrosSettings* cros_settings = CrosSettings::Get();
33
34    // Remove the real DeviceSettingsProvider and replace it with a stub.
35    device_settings_provider_ =
36        cros_settings->GetProvider(chromeos::kReportDeviceVersionInfo);
37    EXPECT_TRUE(device_settings_provider_ != NULL);
38    EXPECT_TRUE(
39        cros_settings->RemoveSettingsProvider(device_settings_provider_));
40    cros_settings->AddSettingsProvider(&stub_settings_provider_);
41  }
42
43  virtual ~KioskModeSettingsTest() {
44    // Restore the real DeviceSettingsProvider.
45    CrosSettings* cros_settings = CrosSettings::Get();
46    EXPECT_TRUE(
47      cros_settings->RemoveSettingsProvider(&stub_settings_provider_));
48    cros_settings->AddSettingsProvider(device_settings_provider_);
49  }
50
51  virtual void SetUp() OVERRIDE {
52    if (!KioskModeSettings::Get()->is_initialized()) {
53      KioskModeSettings::Get()->Initialize(
54          base::Bind(&KioskModeSettingsTest::SetUp,
55                     base::Unretained(this)));
56      return;
57    }
58  }
59
60  virtual void TearDown() OVERRIDE {
61    KioskModeSettings::Get()->set_initialized(false);
62  }
63
64  void ReInitialize() {
65    KioskModeSettings::Get()->set_initialized(false);
66    KioskModeSettings::Get()->Initialize(base::Bind(&base::DoNothing));
67  }
68
69  void DisableKioskModeSettings() {
70    KioskModeSettings::Get()->set_initialized(false);
71  }
72
73  base::MessageLoop message_loop_;
74  content::TestBrowserThread ui_thread_;
75  content::TestBrowserThread file_thread_;
76
77  ScopedTestDeviceSettingsService test_device_settings_service_;
78  ScopedTestCrosSettings test_cros_settings_;
79
80  CrosSettingsProvider* device_settings_provider_;
81  StubCrosSettingsProvider stub_settings_provider_;
82};
83
84TEST_F(KioskModeSettingsTest, DisabledByDefault) {
85  EXPECT_FALSE(KioskModeSettings::Get()->IsKioskModeEnabled());
86}
87
88TEST_F(KioskModeSettingsTest, InstanceAvailable) {
89  EXPECT_TRUE(KioskModeSettings::Get() != NULL);
90  EXPECT_TRUE(KioskModeSettings::Get()->is_initialized());
91}
92
93TEST_F(KioskModeSettingsTest, CheckLogoutTimeoutBounds) {
94  chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
95
96  // Check if we go over max.
97  cros_settings->SetInteger(
98      kIdleLogoutTimeout,
99      KioskModeSettings::kMaxIdleLogoutTimeout + kFudgeInt);
100  ReInitialize();
101  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
102            base::TimeDelta::FromMilliseconds(
103                KioskModeSettings::kMaxIdleLogoutTimeout));
104
105  // Check if we go under min.
106  cros_settings->SetInteger(
107      kIdleLogoutTimeout,
108      KioskModeSettings::kMinIdleLogoutTimeout - kFudgeInt);
109  ReInitialize();
110  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
111            base::TimeDelta::FromMilliseconds(
112                KioskModeSettings::kMinIdleLogoutTimeout));
113
114  // Check if we are between max and min.
115  cros_settings->SetInteger(
116      kIdleLogoutTimeout,
117      KioskModeSettings::kMaxIdleLogoutTimeout - kFudgeInt);
118  ReInitialize();
119  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
120            base::TimeDelta::FromMilliseconds(
121                KioskModeSettings::kMaxIdleLogoutTimeout - kFudgeInt));
122}
123
124TEST_F(KioskModeSettingsTest, CheckLogoutWarningDurationBounds) {
125  chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
126
127  // Check if we go over max.
128  cros_settings->SetInteger(
129      kIdleLogoutWarningDuration,
130      KioskModeSettings::kMaxIdleLogoutWarningDuration + kFudgeInt);
131  ReInitialize();
132  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
133            base::TimeDelta::FromMilliseconds(
134                KioskModeSettings::kMaxIdleLogoutWarningDuration));
135
136  // Check if we go under min.
137  cros_settings->SetInteger(
138      kIdleLogoutWarningDuration,
139      KioskModeSettings::kMinIdleLogoutWarningDuration - kFudgeInt);
140  ReInitialize();
141  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
142            base::TimeDelta::FromMilliseconds(
143                KioskModeSettings::kMinIdleLogoutWarningDuration));
144
145  // Check if we are between max and min.
146  cros_settings->SetInteger(
147      kIdleLogoutWarningDuration,
148      KioskModeSettings::kMaxIdleLogoutWarningDuration - kFudgeInt);
149  ReInitialize();
150  EXPECT_EQ(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
151            base::TimeDelta::FromMilliseconds(
152                KioskModeSettings::kMaxIdleLogoutWarningDuration - kFudgeInt));
153}
154
155TEST_F(KioskModeSettingsTest, UnitializedValues) {
156  DisableKioskModeSettings();
157
158  // Time delta initializes to '0' microseconds.
159  EXPECT_LT(KioskModeSettings::Get()->GetScreensaverTimeout(),
160            base::TimeDelta());
161  EXPECT_LT(KioskModeSettings::Get()->GetIdleLogoutTimeout(),
162            base::TimeDelta());
163  EXPECT_LT(KioskModeSettings::Get()->GetIdleLogoutWarningDuration(),
164            base::TimeDelta());
165}
166
167}  // namespace chromeos
168