Add enterprise policy for SSL error overriding
[chromium-blink-merge.git] / chrome / browser / policy / profile_policy_connector_unittest.cc
blobcfbb57d89bf53cc203870316395f475dac186afd
1 // Copyright 2014 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.
5 #include "chrome/browser/policy/profile_policy_connector.h"
7 #include "base/message_loop/message_loop.h"
8 #include "base/run_loop.h"
9 #include "base/values.h"
10 #include "chrome/test/base/testing_browser_process.h"
11 #include "components/autofill/core/common/autofill_pref_names.h"
12 #include "components/policy/core/browser/browser_policy_connector.h"
13 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
14 #include "components/policy/core/common/cloud/cloud_policy_manager.h"
15 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h"
16 #include "components/policy/core/common/mock_configuration_policy_provider.h"
17 #include "components/policy/core/common/policy_bundle.h"
18 #include "components/policy/core/common/policy_map.h"
19 #include "components/policy/core/common/policy_service.h"
20 #include "components/policy/core/common/schema_registry.h"
21 #include "policy/policy_constants.h"
22 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h"
25 using testing::Return;
26 using testing::_;
28 namespace policy {
30 class ProfilePolicyConnectorTest : public testing::Test {
31 protected:
32 ProfilePolicyConnectorTest() {}
33 ~ProfilePolicyConnectorTest() override {}
35 void SetUp() override {
36 // This must be set up before the TestingBrowserProcess is created.
37 BrowserPolicyConnector::SetPolicyProviderForTesting(&mock_provider_);
39 EXPECT_CALL(mock_provider_, IsInitializationComplete(_))
40 .WillRepeatedly(Return(true));
42 cloud_policy_store_.NotifyStoreLoaded();
43 cloud_policy_manager_.reset(
44 new CloudPolicyManager(std::string(),
45 std::string(),
46 &cloud_policy_store_,
47 loop_.message_loop_proxy(),
48 loop_.message_loop_proxy(),
49 loop_.message_loop_proxy()));
52 void TearDown() override {
53 TestingBrowserProcess::GetGlobal()->SetBrowserPolicyConnector(nullptr);
54 cloud_policy_manager_->Shutdown();
57 base::MessageLoop loop_;
58 SchemaRegistry schema_registry_;
59 MockConfigurationPolicyProvider mock_provider_;
60 MockCloudPolicyStore cloud_policy_store_;
61 scoped_ptr<CloudPolicyManager> cloud_policy_manager_;
64 TEST_F(ProfilePolicyConnectorTest, IsPolicyFromCloudPolicy) {
65 ProfilePolicyConnector connector;
66 connector.Init(false,
67 #if defined(OS_CHROMEOS)
68 nullptr,
69 #endif
70 &schema_registry_,
71 cloud_policy_manager_.get());
73 // No policy is set initially.
74 EXPECT_FALSE(
75 connector.IsPolicyFromCloudPolicy(autofill::prefs::kAutofillEnabled));
76 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, std::string());
77 EXPECT_FALSE(connector.policy_service()->GetPolicies(chrome_ns).GetValue(
78 key::kAutoFillEnabled));
80 // Set the policy at the cloud provider.
81 cloud_policy_store_.policy_map_.Set(key::kAutoFillEnabled,
82 POLICY_LEVEL_MANDATORY,
83 POLICY_SCOPE_USER,
84 new base::FundamentalValue(false),
85 nullptr);
86 cloud_policy_store_.NotifyStoreLoaded();
87 base::RunLoop().RunUntilIdle();
88 EXPECT_TRUE(connector.IsPolicyFromCloudPolicy(key::kAutoFillEnabled));
89 const base::Value* value =
90 connector.policy_service()->GetPolicies(chrome_ns).GetValue(
91 key::kAutoFillEnabled);
92 ASSERT_TRUE(value);
93 EXPECT_TRUE(base::FundamentalValue(false).Equals(value));
95 // Now test with a higher-priority provider also setting the policy.
96 PolicyMap map;
97 map.Set(key::kAutoFillEnabled,
98 POLICY_LEVEL_MANDATORY,
99 POLICY_SCOPE_USER,
100 new base::FundamentalValue(true),
101 nullptr);
102 mock_provider_.UpdateChromePolicy(map);
103 EXPECT_FALSE(connector.IsPolicyFromCloudPolicy(key::kAutoFillEnabled));
104 value = connector.policy_service()->GetPolicies(chrome_ns).GetValue(
105 key::kAutoFillEnabled);
106 ASSERT_TRUE(value);
107 EXPECT_TRUE(base::FundamentalValue(true).Equals(value));
109 // Cleanup.
110 connector.Shutdown();
113 } // namespace policy