1// Copyright 2013 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 "base/prefs/pref_value_map.h"
6#include "base/values.h"
7#include "chrome/browser/sync/sync_policy_handler.h"
8#include "chrome/common/pref_names.h"
9#include "components/policy/core/common/policy_map.h"
10#include "policy/policy_constants.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace browser_sync {
14
15// Test cases for the Sync policy setting.
16class SyncPolicyHandlerTest : public testing::Test {};
17
18TEST_F(SyncPolicyHandlerTest, Default) {
19  policy::PolicyMap policy;
20  SyncPolicyHandler handler;
21  PrefValueMap prefs;
22  handler.ApplyPolicySettings(policy, &prefs);
23  EXPECT_FALSE(prefs.GetValue(prefs::kSyncManaged, NULL));
24}
25
26TEST_F(SyncPolicyHandlerTest, Enabled) {
27  policy::PolicyMap policy;
28  policy.Set(policy::key::kSyncDisabled,
29             policy::POLICY_LEVEL_MANDATORY,
30             policy::POLICY_SCOPE_USER,
31             base::Value::CreateBooleanValue(false),
32             NULL);
33  SyncPolicyHandler handler;
34  PrefValueMap prefs;
35  handler.ApplyPolicySettings(policy, &prefs);
36
37  // Enabling Sync should not set the pref.
38  EXPECT_FALSE(prefs.GetValue(prefs::kSyncManaged, NULL));
39}
40
41TEST_F(SyncPolicyHandlerTest, Disabled) {
42  policy::PolicyMap policy;
43  policy.Set(policy::key::kSyncDisabled,
44             policy::POLICY_LEVEL_MANDATORY,
45             policy::POLICY_SCOPE_USER,
46             base::Value::CreateBooleanValue(true),
47             NULL);
48  SyncPolicyHandler handler;
49  PrefValueMap prefs;
50  handler.ApplyPolicySettings(policy, &prefs);
51
52  // Sync should be flagged as managed.
53  const base::Value* value = NULL;
54  EXPECT_TRUE(prefs.GetValue(prefs::kSyncManaged, &value));
55  ASSERT_TRUE(value);
56  bool sync_managed = false;
57  bool result = value->GetAsBoolean(&sync_managed);
58  ASSERT_TRUE(result);
59  EXPECT_TRUE(sync_managed);
60}
61
62}  // namespace browser_sync
63