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 "components/policy/core/common/policy_map.h" 9 #include "components/sync_driver/pref_names.h" 10 #include "policy/policy_constants.h" 11 #include "testing/gtest/include/gtest/gtest.h" 12 13 namespace browser_sync { 14 15 // Test cases for the Sync policy setting. 16 class SyncPolicyHandlerTest : public testing::Test {}; 17 18 TEST_F(SyncPolicyHandlerTest, Default) { 19 policy::PolicyMap policy; 20 SyncPolicyHandler handler; 21 PrefValueMap prefs; 22 handler.ApplyPolicySettings(policy, &prefs); 23 EXPECT_FALSE(prefs.GetValue(sync_driver::prefs::kSyncManaged, NULL)); 24 } 25 26 TEST_F(SyncPolicyHandlerTest, Enabled) { 27 policy::PolicyMap policy; 28 policy.Set(policy::key::kSyncDisabled, 29 policy::POLICY_LEVEL_MANDATORY, 30 policy::POLICY_SCOPE_USER, 31 new base::FundamentalValue(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(sync_driver::prefs::kSyncManaged, NULL)); 39 } 40 41 TEST_F(SyncPolicyHandlerTest, Disabled) { 42 policy::PolicyMap policy; 43 policy.Set(policy::key::kSyncDisabled, 44 policy::POLICY_LEVEL_MANDATORY, 45 policy::POLICY_SCOPE_USER, 46 new base::FundamentalValue(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(sync_driver::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