Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(500)

Side by Side Diff: chrome/browser/policy/forwarding_policy_provider_unittest.cc

Issue 60823003: Introduced a ForwardingPolicyProvider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed ios Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 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 "chrome/browser/policy/forwarding_policy_provider.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/values.h"
9 #include "chrome/browser/policy/mock_configuration_policy_provider.h"
10 #include "chrome/browser/policy/policy_bundle.h"
11 #include "chrome/browser/policy/policy_map.h"
12 #include "chrome/browser/policy/policy_types.h"
13 #include "chrome/browser/policy/schema_registry.h"
14 #include "components/policy/core/common/schema.h"
15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17
18 using testing::_;
19 using testing::Mock;
20 using testing::Return;
21
22 namespace policy {
23
24 class ForwardingPolicyProviderTest : public testing::Test {
25 protected:
26 ForwardingPolicyProviderTest() : forwarding_provider_(&mock_provider_) {
27 mock_provider_.Init();
28 forwarding_provider_.Init(&schema_registry_);
29 forwarding_provider_.AddObserver(&observer_);
30 }
31
32 virtual ~ForwardingPolicyProviderTest() {
33 forwarding_provider_.RemoveObserver(&observer_);
34 forwarding_provider_.Shutdown();
35 mock_provider_.Shutdown();
36 }
37
38 SchemaRegistry schema_registry_;
39 MockConfigurationPolicyObserver observer_;
40 MockConfigurationPolicyProvider mock_provider_;
41 ForwardingPolicyProvider forwarding_provider_;
42 };
43
44 TEST_F(ForwardingPolicyProviderTest, Empty) {
45 EXPECT_FALSE(schema_registry_.IsReady());
46 EXPECT_FALSE(
47 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS));
48
49 EXPECT_CALL(mock_provider_, IsInitializationComplete(POLICY_DOMAIN_CHROME))
50 .WillOnce(Return(false));
51 EXPECT_FALSE(
52 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_CHROME));
53 Mock::VerifyAndClearExpectations(&mock_provider_);
54
55 const PolicyBundle empty_bundle;
56 EXPECT_TRUE(forwarding_provider_.policies().Equals(empty_bundle));
57 }
58
59 TEST_F(ForwardingPolicyProviderTest, ForwardsChromePolicy) {
60 PolicyBundle bundle;
61 const PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, "");
62 bundle.Get(chrome_ns).Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
63 base::Value::CreateStringValue("value"), NULL);
64
65 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
66 scoped_ptr<PolicyBundle> delegate_bundle(new PolicyBundle);
67 delegate_bundle->CopyFrom(bundle);
68 delegate_bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
69 .Set("component policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
70 base::Value::CreateStringValue("not forwarded"), NULL);
71 mock_provider_.UpdatePolicy(delegate_bundle.Pass());
72 Mock::VerifyAndClearExpectations(&observer_);
73
74 EXPECT_FALSE(
75 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS));
76 EXPECT_TRUE(forwarding_provider_.policies().Equals(bundle));
77 }
78
79 TEST_F(ForwardingPolicyProviderTest, RefreshPolicies) {
80 EXPECT_CALL(mock_provider_, RefreshPolicies());
81 forwarding_provider_.RefreshPolicies();
82 Mock::VerifyAndClearExpectations(&mock_provider_);
83 }
84
85 TEST_F(ForwardingPolicyProviderTest, SchemaReady) {
86 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
87 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
88 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
89 Mock::VerifyAndClearExpectations(&observer_);
90
91 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete(
92 policy::POLICY_DOMAIN_EXTENSIONS));
93 }
94
95 TEST_F(ForwardingPolicyProviderTest, SchemaReadyWithComponents) {
96 PolicyMap policy_map;
97 policy_map.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
98 base::Value::CreateStringValue("omg"), NULL);
99 scoped_ptr<PolicyBundle> bundle(new PolicyBundle);
100 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, "")).CopyFrom(policy_map);
101 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
102 .CopyFrom(policy_map);
103 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
104 mock_provider_.UpdatePolicy(bundle.Pass());
105 Mock::VerifyAndClearExpectations(&observer_);
106
107 EXPECT_CALL(mock_provider_, RefreshPolicies()).Times(0);
108 schema_registry_.RegisterComponent(
109 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), Schema());
110 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
111 Mock::VerifyAndClearExpectations(&mock_provider_);
112
113 EXPECT_CALL(mock_provider_, RefreshPolicies());
114 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
115 Mock::VerifyAndClearExpectations(&mock_provider_);
116
117 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
118 policy::POLICY_DOMAIN_EXTENSIONS));
119 PolicyBundle expected_bundle;
120 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, ""))
121 .CopyFrom(policy_map);
122 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle));
123
124 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
125 forwarding_provider_.OnUpdatePolicy(&mock_provider_);
126 Mock::VerifyAndClearExpectations(&observer_);
127
128 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete(
129 policy::POLICY_DOMAIN_EXTENSIONS));
130 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
131 .CopyFrom(policy_map);
132 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle));
133 }
134
135 TEST_F(ForwardingPolicyProviderTest, DelegateUpdates) {
136 schema_registry_.RegisterComponent(
137 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), Schema());
138 EXPECT_FALSE(schema_registry_.IsReady());
139 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
140 policy::POLICY_DOMAIN_EXTENSIONS));
141
142 PolicyMap policy_map;
143 policy_map.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
144 base::Value::CreateStringValue("omg"), NULL);
145 // Chrome policy updates are forwarded even if the components aren't ready.
146 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
147 mock_provider_.UpdateChromePolicy(policy_map);
148 Mock::VerifyAndClearExpectations(&observer_);
149
150 EXPECT_CALL(mock_provider_, RefreshPolicies());
151 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
152 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
153 EXPECT_TRUE(schema_registry_.IsReady());
154 Mock::VerifyAndClearExpectations(&mock_provider_);
155 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
156 policy::POLICY_DOMAIN_EXTENSIONS));
157
158 // The forwarding provider becomes ready after this refresh completes, and
159 // starts forwarding policy updates after that.
160 EXPECT_CALL(observer_, OnUpdatePolicy(_));
161 mock_provider_.UpdateChromePolicy(policy_map);
162 Mock::VerifyAndClearExpectations(&observer_);
163
164 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete(
165 policy::POLICY_DOMAIN_EXTENSIONS));
166
167 // Keeps forwarding.
168 EXPECT_CALL(observer_, OnUpdatePolicy(_));
169 mock_provider_.UpdateChromePolicy(policy_map);
170 Mock::VerifyAndClearExpectations(&observer_);
171 }
172
173 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/forwarding_policy_provider.cc ('k') | chrome/browser/policy/mock_configuration_policy_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698