Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / chrome / browser / policy / profile_policy_connector_unittest.cc
blob2a19a73afaf3913ecaa4f326aa44986d122e15b8
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/run_loop.h"
8 #include "base/values.h"
9 #include "chrome/test/base/testing_browser_process.h"
10 #include "components/autofill/core/common/autofill_pref_names.h"
11 #include "components/policy/core/browser/browser_policy_connector.h"
12 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
13 #include "components/policy/core/common/cloud/cloud_policy_manager.h"
14 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h"
15 #include "components/policy/core/common/mock_configuration_policy_provider.h"
16 #include "components/policy/core/common/policy_bundle.h"
17 #include "components/policy/core/common/policy_map.h"
18 #include "components/policy/core/common/policy_service.h"
19 #include "components/policy/core/common/schema_registry.h"
20 #include "policy/policy_constants.h"
21 #include "policy/proto/device_management_backend.pb.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(new CloudPolicyManager(
44 std::string(), std::string(), &cloud_policy_store_, loop_.task_runner(),
45 loop_.task_runner(), loop_.task_runner()));
48 void TearDown() override {
49 TestingBrowserProcess::GetGlobal()->SetBrowserPolicyConnector(nullptr);
50 cloud_policy_manager_->Shutdown();
53 base::MessageLoop loop_;
54 SchemaRegistry schema_registry_;
55 MockConfigurationPolicyProvider mock_provider_;
56 MockCloudPolicyStore cloud_policy_store_;
57 scoped_ptr<CloudPolicyManager> cloud_policy_manager_;
60 TEST_F(ProfilePolicyConnectorTest, IsManagedForManagedUsers) {
61 ProfilePolicyConnector connector;
62 connector.Init(
63 #if defined(OS_CHROMEOS)
64 nullptr,
65 #endif
66 &schema_registry_, cloud_policy_manager_.get());
67 EXPECT_FALSE(connector.IsManaged());
68 EXPECT_EQ(connector.GetManagementDomain(), "");
70 cloud_policy_store_.policy_.reset(new enterprise_management::PolicyData());
71 cloud_policy_store_.policy_->set_username("test@testdomain.com");
72 cloud_policy_store_.policy_->set_state(
73 enterprise_management::PolicyData::ACTIVE);
74 EXPECT_TRUE(connector.IsManaged());
75 EXPECT_EQ(connector.GetManagementDomain(), "testdomain.com");
77 // Cleanup.
78 connector.Shutdown();
81 TEST_F(ProfilePolicyConnectorTest, IsPolicyFromCloudPolicy) {
82 ProfilePolicyConnector connector;
83 connector.Init(
84 #if defined(OS_CHROMEOS)
85 nullptr,
86 #endif
87 &schema_registry_, cloud_policy_manager_.get());
89 // No policy is set initially.
90 EXPECT_FALSE(
91 connector.IsPolicyFromCloudPolicy(autofill::prefs::kAutofillEnabled));
92 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, std::string());
93 EXPECT_FALSE(connector.policy_service()->GetPolicies(chrome_ns).GetValue(
94 key::kAutoFillEnabled));
96 // Set the policy at the cloud provider.
97 cloud_policy_store_.policy_map_.Set(key::kAutoFillEnabled,
98 POLICY_LEVEL_MANDATORY,
99 POLICY_SCOPE_USER,
100 new base::FundamentalValue(false),
101 nullptr);
102 cloud_policy_store_.NotifyStoreLoaded();
103 base::RunLoop().RunUntilIdle();
104 EXPECT_TRUE(connector.IsPolicyFromCloudPolicy(key::kAutoFillEnabled));
105 const base::Value* value =
106 connector.policy_service()->GetPolicies(chrome_ns).GetValue(
107 key::kAutoFillEnabled);
108 ASSERT_TRUE(value);
109 EXPECT_TRUE(base::FundamentalValue(false).Equals(value));
111 // Now test with a higher-priority provider also setting the policy.
112 PolicyMap map;
113 map.Set(key::kAutoFillEnabled,
114 POLICY_LEVEL_MANDATORY,
115 POLICY_SCOPE_USER,
116 new base::FundamentalValue(true),
117 nullptr);
118 mock_provider_.UpdateChromePolicy(map);
119 EXPECT_FALSE(connector.IsPolicyFromCloudPolicy(key::kAutoFillEnabled));
120 value = connector.policy_service()->GetPolicies(chrome_ns).GetValue(
121 key::kAutoFillEnabled);
122 ASSERT_TRUE(value);
123 EXPECT_TRUE(base::FundamentalValue(true).Equals(value));
125 // Cleanup.
126 connector.Shutdown();
129 } // namespace policy