15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 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 "components/autofill/core/common/autofill_pref_names.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/browser/autofill_policy_handler.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.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 policy {
141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Test cases for the Autofill policy setting.
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class AutofillPolicyHandlerTest : public testing::Test {};
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(AutofillPolicyHandlerTest, Default) {
191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PolicyMap policy;
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PrefValueMap prefs;
211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  AutofillPolicyHandler handler;
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler.ApplyPolicySettings(policy, &prefs);
231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_FALSE(prefs.GetValue(autofill::prefs::kAutofillEnabled, NULL));
241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(AutofillPolicyHandlerTest, Enabled) {
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PolicyMap policy;
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  policy.Set(key::kAutoFillEnabled,
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)             POLICY_LEVEL_MANDATORY,
301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)             POLICY_SCOPE_USER,
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             new base::FundamentalValue(true),
321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)             NULL);
331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PrefValueMap prefs;
341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  AutofillPolicyHandler handler;
351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler.ApplyPolicySettings(policy, &prefs);
361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Enabling Autofill should not set the pref.
381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_FALSE(prefs.GetValue(autofill::prefs::kAutofillEnabled, NULL));
391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(AutofillPolicyHandlerTest, Disabled) {
421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PolicyMap policy;
431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  policy.Set(key::kAutoFillEnabled,
441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)             POLICY_LEVEL_MANDATORY,
451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)             POLICY_SCOPE_USER,
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             new base::FundamentalValue(false),
471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)             NULL);
481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  PrefValueMap prefs;
491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  AutofillPolicyHandler handler;
501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  handler.ApplyPolicySettings(policy, &prefs);
511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Disabling Autofill should switch the pref to managed.
531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  const base::Value* value = NULL;
541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(prefs.GetValue(autofill::prefs::kAutofillEnabled, &value));
551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(value);
561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  bool autofill_enabled = true;
571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  bool result = value->GetAsBoolean(&autofill_enabled);
581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(result);
591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_FALSE(autofill_enabled);
601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}  // namespace policy
63