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

Side by Side Diff: components/policy/core/common/forwarding_policy_provider_unittest.cc

Issue 337053005: Precache policy-for-extensions for device-local accounts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed ios tests Created 6 years, 6 months 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
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/policy/core/common/forwarding_policy_provider.h" 5 #include "components/policy/core/common/forwarding_policy_provider.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "components/policy/core/common/mock_configuration_policy_provider.h" 9 #include "components/policy/core/common/mock_configuration_policy_provider.h"
10 #include "components/policy/core/common/policy_bundle.h" 10 #include "components/policy/core/common/policy_bundle.h"
11 #include "components/policy/core/common/policy_map.h" 11 #include "components/policy/core/common/policy_map.h"
12 #include "components/policy/core/common/policy_types.h" 12 #include "components/policy/core/common/policy_types.h"
13 #include "components/policy/core/common/schema.h" 13 #include "components/policy/core/common/schema.h"
14 #include "components/policy/core/common/schema_registry.h" 14 #include "components/policy/core/common/schema_registry.h"
15 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 using testing::_; 18 using testing::_;
19 using testing::Mock; 19 using testing::Mock;
20 using testing::Return; 20 using testing::Return;
21 21
22 namespace policy { 22 namespace policy {
23 23
24 namespace {
25
26 const char kTestSchema[] =
27 "{"
28 " \"type\": \"object\","
29 " \"properties\": {"
30 " \"foo\": { \"type\": \"string\" }"
31 " }"
32 "}";
33
34 } // namespace
35
24 class ForwardingPolicyProviderTest : public testing::Test { 36 class ForwardingPolicyProviderTest : public testing::Test {
25 protected: 37 protected:
26 ForwardingPolicyProviderTest() : forwarding_provider_(&mock_provider_) { 38 ForwardingPolicyProviderTest() : forwarding_provider_(&mock_provider_) {
27 mock_provider_.Init(); 39 mock_provider_.Init();
28 forwarding_provider_.Init(&schema_registry_); 40 forwarding_provider_.Init(&schema_registry_);
29 forwarding_provider_.AddObserver(&observer_); 41 forwarding_provider_.AddObserver(&observer_);
30 } 42 }
31 43
32 virtual ~ForwardingPolicyProviderTest() { 44 virtual ~ForwardingPolicyProviderTest() {
33 forwarding_provider_.RemoveObserver(&observer_); 45 forwarding_provider_.RemoveObserver(&observer_);
34 forwarding_provider_.Shutdown(); 46 forwarding_provider_.Shutdown();
35 mock_provider_.Shutdown(); 47 mock_provider_.Shutdown();
36 } 48 }
37 49
50 Schema CreateTestSchema() {
51 std::string error;
bartfab (slow) 2014/06/23 09:53:37 Nit: #include <string>
Joao da Silva 2014/07/16 11:47:52 Done.
52 Schema schema = Schema::Parse(kTestSchema, &error);
53 if (!schema.valid())
54 ADD_FAILURE() << error;
55 return schema;
56 }
57
38 SchemaRegistry schema_registry_; 58 SchemaRegistry schema_registry_;
39 MockConfigurationPolicyObserver observer_; 59 MockConfigurationPolicyObserver observer_;
40 MockConfigurationPolicyProvider mock_provider_; 60 MockConfigurationPolicyProvider mock_provider_;
41 ForwardingPolicyProvider forwarding_provider_; 61 ForwardingPolicyProvider forwarding_provider_;
42 }; 62 };
43 63
44 TEST_F(ForwardingPolicyProviderTest, Empty) { 64 TEST_F(ForwardingPolicyProviderTest, Empty) {
45 EXPECT_FALSE(schema_registry_.IsReady()); 65 EXPECT_FALSE(schema_registry_.IsReady());
46 EXPECT_FALSE( 66 EXPECT_FALSE(
47 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS)); 67 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS));
(...skipping 11 matching lines...) Expand all
59 TEST_F(ForwardingPolicyProviderTest, ForwardsChromePolicy) { 79 TEST_F(ForwardingPolicyProviderTest, ForwardsChromePolicy) {
60 PolicyBundle bundle; 80 PolicyBundle bundle;
61 const PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, ""); 81 const PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, "");
62 bundle.Get(chrome_ns).Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 82 bundle.Get(chrome_ns).Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
63 base::Value::CreateStringValue("value"), NULL); 83 base::Value::CreateStringValue("value"), NULL);
64 84
65 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_)); 85 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
66 scoped_ptr<PolicyBundle> delegate_bundle(new PolicyBundle); 86 scoped_ptr<PolicyBundle> delegate_bundle(new PolicyBundle);
67 delegate_bundle->CopyFrom(bundle); 87 delegate_bundle->CopyFrom(bundle);
68 delegate_bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz")) 88 delegate_bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
69 .Set("component policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 89 .Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
70 base::Value::CreateStringValue("not forwarded"), NULL); 90 base::Value::CreateStringValue("not forwarded"), NULL);
71 mock_provider_.UpdatePolicy(delegate_bundle.Pass()); 91 mock_provider_.UpdatePolicy(delegate_bundle.Pass());
72 Mock::VerifyAndClearExpectations(&observer_); 92 Mock::VerifyAndClearExpectations(&observer_);
73 93
74 EXPECT_FALSE( 94 EXPECT_FALSE(
75 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS)); 95 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS));
76 EXPECT_TRUE(forwarding_provider_.policies().Equals(bundle)); 96 EXPECT_TRUE(forwarding_provider_.policies().Equals(bundle));
77 } 97 }
78 98
79 TEST_F(ForwardingPolicyProviderTest, RefreshPolicies) { 99 TEST_F(ForwardingPolicyProviderTest, RefreshPolicies) {
(...skipping 19 matching lines...) Expand all
99 scoped_ptr<PolicyBundle> bundle(new PolicyBundle); 119 scoped_ptr<PolicyBundle> bundle(new PolicyBundle);
100 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, "")).CopyFrom(policy_map); 120 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, "")).CopyFrom(policy_map);
101 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz")) 121 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
102 .CopyFrom(policy_map); 122 .CopyFrom(policy_map);
103 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_)); 123 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
104 mock_provider_.UpdatePolicy(bundle.Pass()); 124 mock_provider_.UpdatePolicy(bundle.Pass());
105 Mock::VerifyAndClearExpectations(&observer_); 125 Mock::VerifyAndClearExpectations(&observer_);
106 126
107 EXPECT_CALL(mock_provider_, RefreshPolicies()).Times(0); 127 EXPECT_CALL(mock_provider_, RefreshPolicies()).Times(0);
108 schema_registry_.RegisterComponent( 128 schema_registry_.RegisterComponent(
109 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), Schema()); 129 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), CreateTestSchema());
110 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS); 130 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
111 Mock::VerifyAndClearExpectations(&mock_provider_); 131 Mock::VerifyAndClearExpectations(&mock_provider_);
112 132
113 EXPECT_CALL(mock_provider_, RefreshPolicies()); 133 EXPECT_CALL(mock_provider_, RefreshPolicies());
114 schema_registry_.SetReady(POLICY_DOMAIN_CHROME); 134 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
115 Mock::VerifyAndClearExpectations(&mock_provider_); 135 Mock::VerifyAndClearExpectations(&mock_provider_);
116 136
117 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete( 137 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
118 policy::POLICY_DOMAIN_EXTENSIONS)); 138 policy::POLICY_DOMAIN_EXTENSIONS));
119 PolicyBundle expected_bundle; 139 PolicyBundle expected_bundle;
120 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, "")) 140 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, ""))
121 .CopyFrom(policy_map); 141 .CopyFrom(policy_map);
122 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle)); 142 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle));
123 143
124 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_)); 144 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
125 forwarding_provider_.OnUpdatePolicy(&mock_provider_); 145 forwarding_provider_.OnUpdatePolicy(&mock_provider_);
126 Mock::VerifyAndClearExpectations(&observer_); 146 Mock::VerifyAndClearExpectations(&observer_);
127 147
128 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete( 148 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete(
129 policy::POLICY_DOMAIN_EXTENSIONS)); 149 policy::POLICY_DOMAIN_EXTENSIONS));
130 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz")) 150 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
131 .CopyFrom(policy_map); 151 .CopyFrom(policy_map);
132 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle)); 152 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle));
133 } 153 }
134 154
135 TEST_F(ForwardingPolicyProviderTest, DelegateUpdates) { 155 TEST_F(ForwardingPolicyProviderTest, DelegateUpdates) {
136 schema_registry_.RegisterComponent( 156 schema_registry_.RegisterComponent(
137 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), Schema()); 157 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), CreateTestSchema());
138 EXPECT_FALSE(schema_registry_.IsReady()); 158 EXPECT_FALSE(schema_registry_.IsReady());
139 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete( 159 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
140 policy::POLICY_DOMAIN_EXTENSIONS)); 160 policy::POLICY_DOMAIN_EXTENSIONS));
141 161
142 PolicyMap policy_map; 162 PolicyMap policy_map;
143 policy_map.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 163 policy_map.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
144 base::Value::CreateStringValue("omg"), NULL); 164 base::Value::CreateStringValue("omg"), NULL);
145 // Chrome policy updates are forwarded even if the components aren't ready. 165 // Chrome policy updates are forwarded even if the components aren't ready.
146 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_)); 166 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
147 mock_provider_.UpdateChromePolicy(policy_map); 167 mock_provider_.UpdateChromePolicy(policy_map);
(...skipping 19 matching lines...) Expand all
167 // Keeps forwarding. 187 // Keeps forwarding.
168 EXPECT_CALL(observer_, OnUpdatePolicy(_)); 188 EXPECT_CALL(observer_, OnUpdatePolicy(_));
169 mock_provider_.UpdateChromePolicy(policy_map); 189 mock_provider_.UpdateChromePolicy(policy_map);
170 Mock::VerifyAndClearExpectations(&observer_); 190 Mock::VerifyAndClearExpectations(&observer_);
171 } 191 }
172 192
173 TEST_F(ForwardingPolicyProviderTest, RemoveAndAddComponent) { 193 TEST_F(ForwardingPolicyProviderTest, RemoveAndAddComponent) {
174 EXPECT_CALL(mock_provider_, RefreshPolicies()); 194 EXPECT_CALL(mock_provider_, RefreshPolicies());
175 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "xyz"); 195 const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "xyz");
176 schema_registry_.SetReady(POLICY_DOMAIN_CHROME); 196 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
177 schema_registry_.RegisterComponent(ns, Schema()); 197 schema_registry_.RegisterComponent(ns, CreateTestSchema());
178 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS); 198 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
179 Mock::VerifyAndClearExpectations(&mock_provider_); 199 Mock::VerifyAndClearExpectations(&mock_provider_);
180 200
181 // Serve policy for |ns|. 201 // Serve policy for |ns|.
182 PolicyBundle platform_policy; 202 PolicyBundle platform_policy;
183 platform_policy.Get(ns).Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 203 platform_policy.Get(ns).Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
184 base::Value::CreateStringValue("omg"), NULL); 204 base::Value::CreateStringValue("omg"), NULL);
185 scoped_ptr<PolicyBundle> copy(new PolicyBundle); 205 scoped_ptr<PolicyBundle> copy(new PolicyBundle);
186 copy->CopyFrom(platform_policy); 206 copy->CopyFrom(platform_policy);
187 EXPECT_CALL(observer_, OnUpdatePolicy(_)); 207 EXPECT_CALL(observer_, OnUpdatePolicy(_));
188 mock_provider_.UpdatePolicy(copy.Pass()); 208 mock_provider_.UpdatePolicy(copy.Pass());
189 Mock::VerifyAndClearExpectations(&observer_); 209 Mock::VerifyAndClearExpectations(&observer_);
190 EXPECT_TRUE(forwarding_provider_.policies().Equals(platform_policy)); 210 EXPECT_TRUE(forwarding_provider_.policies().Equals(platform_policy));
191 211
192 // Now remove that component. 212 // Now remove that component.
193 EXPECT_CALL(observer_, OnUpdatePolicy(_)); 213 EXPECT_CALL(observer_, OnUpdatePolicy(_));
194 schema_registry_.UnregisterComponent(ns); 214 schema_registry_.UnregisterComponent(ns);
195 Mock::VerifyAndClearExpectations(&observer_); 215 Mock::VerifyAndClearExpectations(&observer_);
196 const PolicyBundle empty; 216 const PolicyBundle empty;
197 EXPECT_TRUE(forwarding_provider_.policies().Equals(empty)); 217 EXPECT_TRUE(forwarding_provider_.policies().Equals(empty));
198 218
199 // Adding it back should serve the current policies again, even though they 219 // Adding it back should serve the current policies again, even though they
200 // haven't changed on the platform provider. 220 // haven't changed on the platform provider.
201 EXPECT_CALL(mock_provider_, RefreshPolicies()); 221 EXPECT_CALL(mock_provider_, RefreshPolicies());
202 schema_registry_.RegisterComponent(ns, Schema()); 222 schema_registry_.RegisterComponent(ns, CreateTestSchema());
203 Mock::VerifyAndClearExpectations(&mock_provider_); 223 Mock::VerifyAndClearExpectations(&mock_provider_);
204 224
205 EXPECT_CALL(observer_, OnUpdatePolicy(_)); 225 EXPECT_CALL(observer_, OnUpdatePolicy(_));
206 copy.reset(new PolicyBundle); 226 copy.reset(new PolicyBundle);
207 copy->CopyFrom(platform_policy); 227 copy->CopyFrom(platform_policy);
208 mock_provider_.UpdatePolicy(copy.Pass()); 228 mock_provider_.UpdatePolicy(copy.Pass());
209 Mock::VerifyAndClearExpectations(&observer_); 229 Mock::VerifyAndClearExpectations(&observer_);
210 EXPECT_TRUE(forwarding_provider_.policies().Equals(platform_policy)); 230 EXPECT_TRUE(forwarding_provider_.policies().Equals(platform_policy));
211 } 231 }
212 232
213 } // namespace policy 233 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698