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