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

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: rebase, fixes 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/basictypes.h"
bartfab (slow) 2013/11/11 14:40:08 Nit: Already included by header file.
Joao da Silva 2013/11/12 15:26:33 Done.
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/policy_namespace.h"
15 #include "components/policy/core/common/schema.h"
16 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18
19 using testing::_;
20 using testing::Mock;
21 using testing::Return;
22
23 namespace policy {
24
25 class ForwardingPolicyProviderTest : public testing::Test {
bartfab (slow) 2013/11/11 14:40:08 Nit: The style guide forbids inline method definit
Joao da Silva 2013/11/12 15:26:33 There is an exception for tests. I dug the latest
bartfab (slow) 2013/11/13 11:56:35 Interesting. I had followed a different thread tha
26 protected:
27 ForwardingPolicyProviderTest() : forwarding_provider_(&mock_provider_) {
28 mock_provider_.Init();
29 forwarding_provider_.Init(&schema_registry_);
30 forwarding_provider_.AddObserver(&observer_);
31 }
32
33 virtual ~ForwardingPolicyProviderTest() {
34 forwarding_provider_.RemoveObserver(&observer_);
35 forwarding_provider_.Shutdown();
36 mock_provider_.Shutdown();
37 }
38
39 SchemaRegistry schema_registry_;
40 MockConfigurationPolicyObserver observer_;
41 MockConfigurationPolicyProvider mock_provider_;
42 ForwardingPolicyProvider forwarding_provider_;
43 };
44
45 TEST_F(ForwardingPolicyProviderTest, Empty) {
46 EXPECT_FALSE(schema_registry_.IsReady());
47 EXPECT_FALSE(
48 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS));
49
50 EXPECT_CALL(mock_provider_, IsInitializationComplete(POLICY_DOMAIN_CHROME))
51 .WillOnce(Return(false));
52 EXPECT_FALSE(
53 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_CHROME));
54 Mock::VerifyAndClearExpectations(&mock_provider_);
55
56 const PolicyBundle empty_bundle;
57 EXPECT_TRUE(forwarding_provider_.policies().Equals(empty_bundle));
58 }
59
60 TEST_F(ForwardingPolicyProviderTest, ForwardsChromePolicy) {
61 PolicyBundle bundle;
62 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, "");
bartfab (slow) 2013/11/11 14:40:08 Nit: const - or simply construct it inline.
Joao da Silva 2013/11/12 15:26:33 Done.
63 bundle.Get(chrome_ns).Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
64 base::Value::CreateStringValue("value"), NULL);
65
66 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
67 scoped_ptr<PolicyBundle> copy(new PolicyBundle);
bartfab (slow) 2013/11/11 14:40:08 Nit 1: I would not call this |copy| because its ma
Joao da Silva 2013/11/12 15:26:33 Done.
68 copy->CopyFrom(bundle);
69 copy->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
70 .Set("component policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
71 base::Value::CreateStringValue("not forwarded"), NULL);
72 mock_provider_.UpdatePolicy(copy.Pass());
73 Mock::VerifyAndClearExpectations(&observer_);
74
75 EXPECT_FALSE(
76 forwarding_provider_.IsInitializationComplete(POLICY_DOMAIN_EXTENSIONS));
77 EXPECT_TRUE(forwarding_provider_.policies().Equals(bundle));
78 }
79
80 TEST_F(ForwardingPolicyProviderTest, RefreshPolicies) {
81 EXPECT_CALL(mock_provider_, RefreshPolicies());
82 forwarding_provider_.RefreshPolicies();
83 Mock::VerifyAndClearExpectations(&mock_provider_);
84 }
85
86 TEST_F(ForwardingPolicyProviderTest, SchemaReady) {
87 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
88 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
89 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
90 Mock::VerifyAndClearExpectations(&observer_);
91
92 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete(
93 policy::POLICY_DOMAIN_EXTENSIONS));
94 }
95
96 TEST_F(ForwardingPolicyProviderTest, SchemaReadyWithComponents) {
97 PolicyMap policy_map;
98 policy_map.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
99 base::Value::CreateStringValue("omg"), NULL);
100 scoped_ptr<PolicyBundle> bundle(new PolicyBundle);
101 bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, "")).CopyFrom(policy_map);
102 bundle->Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
103 .CopyFrom(policy_map);
104 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
105 mock_provider_.UpdatePolicy(bundle.Pass());
106 Mock::VerifyAndClearExpectations(&observer_);
107
108 EXPECT_CALL(mock_provider_, RefreshPolicies());
109 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
bartfab (slow) 2013/11/11 14:40:08 Nit: You could additionally verify that this SetRe
Joao da Silva 2013/11/12 15:26:33 Done.
110 schema_registry_.RegisterComponent(
111 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), Schema());
112 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
113 Mock::VerifyAndClearExpectations(&mock_provider_);
114
115 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
116 policy::POLICY_DOMAIN_EXTENSIONS));
117 PolicyBundle expected_bundle;
118 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, ""))
119 .CopyFrom(policy_map);
120 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle));
121
122 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
123 forwarding_provider_.OnUpdatePolicy(&mock_provider_);
124 Mock::VerifyAndClearExpectations(&observer_);
125
126 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete(
127 policy::POLICY_DOMAIN_EXTENSIONS));
128 expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"))
129 .CopyFrom(policy_map);
130 EXPECT_TRUE(forwarding_provider_.policies().Equals(expected_bundle));
131 }
132
133 TEST_F(ForwardingPolicyProviderTest, DelegateUpdates) {
134 schema_registry_.RegisterComponent(
135 PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), Schema());
136 EXPECT_FALSE(schema_registry_.IsReady());
137 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
138 policy::POLICY_DOMAIN_EXTENSIONS));
139
140 PolicyMap policy_map;
141 policy_map.Set("foo", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
142 base::Value::CreateStringValue("omg"), NULL);
143 // Chrome policy updates are forwarded even if the components aren't ready.
144 EXPECT_CALL(observer_, OnUpdatePolicy(&forwarding_provider_));
145 mock_provider_.UpdateChromePolicy(policy_map);
146 Mock::VerifyAndClearExpectations(&observer_);
147
148 EXPECT_CALL(mock_provider_, RefreshPolicies());
149 schema_registry_.SetReady(POLICY_DOMAIN_CHROME);
150 schema_registry_.SetReady(POLICY_DOMAIN_EXTENSIONS);
151 EXPECT_TRUE(schema_registry_.IsReady());
152 Mock::VerifyAndClearExpectations(&mock_provider_);
153 EXPECT_FALSE(forwarding_provider_.IsInitializationComplete(
154 policy::POLICY_DOMAIN_EXTENSIONS));
155
156 // The forwarding provider becomes ready after this refresh completes, and
157 // starts forwarding policy updates after that.
158 EXPECT_CALL(observer_, OnUpdatePolicy(_));
159 mock_provider_.UpdateChromePolicy(policy_map);
160 Mock::VerifyAndClearExpectations(&observer_);
161
162 EXPECT_TRUE(forwarding_provider_.IsInitializationComplete(
163 policy::POLICY_DOMAIN_EXTENSIONS));
164
165 // Keeps forwarding from now on.
bartfab (slow) 2013/11/11 14:40:08 Nit: No need for "from now on" - the forwarding wa
Joao da Silva 2013/11/12 15:26:33 Done.
166 EXPECT_CALL(observer_, OnUpdatePolicy(_));
167 mock_provider_.UpdateChromePolicy(policy_map);
168 Mock::VerifyAndClearExpectations(&observer_);
169 }
170
171 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698