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