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/settings/device_settings_cache.h"
6
7#include "base/prefs/testing_pref_service.h"
8#include "chrome/browser/chromeos/chromeos/policy/chrome_device_policy.pb.h"
9#include "chrome/common/pref_names.h"
10#include "policy/proto/device_management_backend.pb.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace em = enterprise_management;
14
15namespace chromeos {
16
17class DeviceSettingsCacheTest : public testing::Test {
18 protected:
19  virtual void SetUp() {
20    // prepare some data.
21    policy_.set_policy_type("google/chromeos/device");
22    em::ChromeDeviceSettingsProto pol;
23    pol.mutable_allow_new_users()->set_allow_new_users(false);
24    policy_.set_policy_value(pol.SerializeAsString());
25
26    device_settings_cache::RegisterPrefs(&local_state_);
27  }
28
29  TestingPrefServiceSimple local_state_;
30  em::PolicyData policy_;
31};
32
33TEST_F(DeviceSettingsCacheTest, Basic) {
34  EXPECT_TRUE(device_settings_cache::Store(policy_, &local_state_));
35
36  em::PolicyData policy_out;
37  EXPECT_TRUE(device_settings_cache::Retrieve(&policy_out, &local_state_));
38
39  EXPECT_TRUE(policy_out.has_policy_type());
40  EXPECT_TRUE(policy_out.has_policy_value());
41
42  em::ChromeDeviceSettingsProto pol;
43  pol.ParseFromString(policy_out.policy_value());
44  EXPECT_TRUE(pol.has_allow_new_users());
45  EXPECT_FALSE(pol.allow_new_users().allow_new_users());
46}
47
48TEST_F(DeviceSettingsCacheTest, CorruptData) {
49  EXPECT_TRUE(device_settings_cache::Store(policy_, &local_state_));
50
51  local_state_.SetString(prefs::kDeviceSettingsCache, "blaaa");
52
53  em::PolicyData policy_out;
54  EXPECT_FALSE(device_settings_cache::Retrieve(&policy_out, &local_state_));
55}
56
57}  // namespace chromeos
58