11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// found in the LICENSE file. 41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/prefs/pref_value_map.h" 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/values.h" 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/sync/sync_policy_handler.h" 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.h" 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "components/sync_driver/pref_names.h" 101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "policy/policy_constants.h" 111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace browser_sync { 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Test cases for the Sync policy setting. 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class SyncPolicyHandlerTest : public testing::Test {}; 171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SyncPolicyHandlerTest, Default) { 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy::PolicyMap policy; 201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SyncPolicyHandler handler; 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) PrefValueMap prefs; 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) handler.ApplyPolicySettings(policy, &prefs); 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) EXPECT_FALSE(prefs.GetValue(sync_driver::prefs::kSyncManaged, NULL)); 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SyncPolicyHandlerTest, Enabled) { 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy::PolicyMap policy; 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy.Set(policy::key::kSyncDisabled, 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy::POLICY_LEVEL_MANDATORY, 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy::POLICY_SCOPE_USER, 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(false), 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NULL); 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SyncPolicyHandler handler; 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) PrefValueMap prefs; 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) handler.ApplyPolicySettings(policy, &prefs); 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Enabling Sync should not set the pref. 3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) EXPECT_FALSE(prefs.GetValue(sync_driver::prefs::kSyncManaged, NULL)); 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SyncPolicyHandlerTest, Disabled) { 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy::PolicyMap policy; 431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy.Set(policy::key::kSyncDisabled, 441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy::POLICY_LEVEL_MANDATORY, 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy::POLICY_SCOPE_USER, 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(true), 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NULL); 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SyncPolicyHandler handler; 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) PrefValueMap prefs; 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) handler.ApplyPolicySettings(policy, &prefs); 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Sync should be flagged as managed. 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const base::Value* value = NULL; 5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) EXPECT_TRUE(prefs.GetValue(sync_driver::prefs::kSyncManaged, &value)); 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ASSERT_TRUE(value); 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) bool sync_managed = false; 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) bool result = value->GetAsBoolean(&sync_managed); 581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ASSERT_TRUE(result); 591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_TRUE(sync_managed); 601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} // namespace browser_sync 63