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/policy/autofill_policy_handler.h"
8#include "components/autofill/core/common/autofill_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 policy {
14
15// Test cases for the Autofill policy setting.
16class AutofillPolicyHandlerTest : public testing::Test {};
17
18TEST_F(AutofillPolicyHandlerTest, Default) {
19  PolicyMap policy;
20  PrefValueMap prefs;
21  AutofillPolicyHandler handler;
22  handler.ApplyPolicySettings(policy, &prefs);
23  EXPECT_FALSE(prefs.GetValue(autofill::prefs::kAutofillEnabled, NULL));
24}
25
26TEST_F(AutofillPolicyHandlerTest, Enabled) {
27  PolicyMap policy;
28  policy.Set(key::kAutoFillEnabled,
29             POLICY_LEVEL_MANDATORY,
30             POLICY_SCOPE_USER,
31             base::Value::CreateBooleanValue(true),
32             NULL);
33  PrefValueMap prefs;
34  AutofillPolicyHandler handler;
35  handler.ApplyPolicySettings(policy, &prefs);
36
37  // Enabling Autofill should not set the pref.
38  EXPECT_FALSE(prefs.GetValue(autofill::prefs::kAutofillEnabled, NULL));
39}
40
41TEST_F(AutofillPolicyHandlerTest, Disabled) {
42  PolicyMap policy;
43  policy.Set(key::kAutoFillEnabled,
44             POLICY_LEVEL_MANDATORY,
45             POLICY_SCOPE_USER,
46             base::Value::CreateBooleanValue(false),
47             NULL);
48  PrefValueMap prefs;
49  AutofillPolicyHandler handler;
50  handler.ApplyPolicySettings(policy, &prefs);
51
52  // Disabling Autofill should switch the pref to managed.
53  const base::Value* value = NULL;
54  EXPECT_TRUE(prefs.GetValue(autofill::prefs::kAutofillEnabled, &value));
55  ASSERT_TRUE(value);
56  bool autofill_enabled = true;
57  bool result = value->GetAsBoolean(&autofill_enabled);
58  ASSERT_TRUE(result);
59  EXPECT_FALSE(autofill_enabled);
60}
61
62}  // namespace policy
63