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

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

Issue 10174003: Pass the previous and the current PolicyMap to Observers of the PolicyService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed nits Created 8 years, 8 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
« no previous file with comments | « chrome/browser/policy/policy_service_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/policy/policy_service_impl.h" 5 #include "chrome/browser/policy/policy_service_impl.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 "chrome/browser/policy/mock_configuration_policy_provider.h" 9 #include "chrome/browser/policy/mock_configuration_policy_provider.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 using ::testing::AnyNumber; 13 using ::testing::AnyNumber;
14 using ::testing::Mock; 14 using ::testing::Mock;
15 using ::testing::_; 15 using ::testing::_;
16 16
17 namespace policy { 17 namespace policy {
18 18
19 namespace { 19 namespace {
20 20
21 class MockPolicyServiceObserver : public PolicyService::Observer { 21 class MockPolicyServiceObserver : public PolicyService::Observer {
22 public: 22 public:
23 virtual ~MockPolicyServiceObserver() {} 23 virtual ~MockPolicyServiceObserver() {}
24 MOCK_METHOD2(OnPolicyUpdated, void(PolicyDomain, const std::string&)); 24 MOCK_METHOD4(OnPolicyUpdated, void(PolicyDomain,
25 const std::string&,
26 const PolicyMap& previous,
27 const PolicyMap& current));
25 }; 28 };
26 29
30 // Helper to compare the arguments to an EXPECT_CALL of OnPolicyUpdated() with
31 // their expected values.
32 MATCHER_P(PolicyEquals, expected, "") {
33 return arg.Equals(*expected);
34 }
35
36 } // namespace
37
27 class PolicyServiceTest : public testing::Test { 38 class PolicyServiceTest : public testing::Test {
28 public: 39 public:
29 PolicyServiceTest() {} 40 PolicyServiceTest() {}
30 41
31 void SetUp() OVERRIDE { 42 void SetUp() OVERRIDE {
32 provider0_.AddMandatoryPolicy("pre", base::Value::CreateIntegerValue(13)); 43 provider0_.AddMandatoryPolicy("pre", base::Value::CreateIntegerValue(13));
33 provider0_.SetInitializationComplete(true); 44 provider0_.SetInitializationComplete(true);
34 provider1_.SetInitializationComplete(true); 45 provider1_.SetInitializationComplete(true);
35 provider2_.SetInitializationComplete(true); 46 provider2_.SetInitializationComplete(true);
36 PolicyServiceImpl::Providers providers; 47 PolicyServiceImpl::Providers providers;
(...skipping 29 matching lines...) Expand all
66 }; 77 };
67 78
68 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { 79 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) {
69 PolicyMap expected; 80 PolicyMap expected;
70 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 81 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
71 base::Value::CreateIntegerValue(13)); 82 base::Value::CreateIntegerValue(13));
72 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 83 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
73 } 84 }
74 85
75 TEST_F(PolicyServiceTest, NotifyObservers) { 86 TEST_F(PolicyServiceTest, NotifyObservers) {
76 PolicyMap expected; 87 PolicyMap expectedPrevious;
77 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 88 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
78 base::Value::CreateIntegerValue(13)); 89 base::Value::CreateIntegerValue(13));
79 90
80 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 91 PolicyMap expectedCurrent;
81 base::Value::CreateIntegerValue(123)); 92 expectedCurrent.CopyFrom(expectedPrevious);
93 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
94 base::Value::CreateIntegerValue(123));
82 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(123)); 95 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(123));
83 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 96 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
97 PolicyEquals(&expectedPrevious),
98 PolicyEquals(&expectedCurrent)));
84 provider0_.RefreshPolicies(); 99 provider0_.RefreshPolicies();
85 Mock::VerifyAndClearExpectations(&observer_); 100 Mock::VerifyAndClearExpectations(&observer_);
86 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 101
87 // No changes. 102 // No changes.
88 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); 103 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0);
89 provider0_.RefreshPolicies(); 104 provider0_.RefreshPolicies();
90 Mock::VerifyAndClearExpectations(&observer_); 105 Mock::VerifyAndClearExpectations(&observer_);
91 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 106 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent));
107
92 // New policy. 108 // New policy.
93 expected.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 109 expectedPrevious.CopyFrom(expectedCurrent);
94 base::Value::CreateIntegerValue(456)); 110 expectedCurrent.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
111 base::Value::CreateIntegerValue(456));
95 provider0_.AddMandatoryPolicy("bbb", base::Value::CreateIntegerValue(456)); 112 provider0_.AddMandatoryPolicy("bbb", base::Value::CreateIntegerValue(456));
96 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 113 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
114 PolicyEquals(&expectedPrevious),
115 PolicyEquals(&expectedCurrent)));
97 provider0_.RefreshPolicies(); 116 provider0_.RefreshPolicies();
98 Mock::VerifyAndClearExpectations(&observer_); 117 Mock::VerifyAndClearExpectations(&observer_);
99 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 118
100 // Removed policy. 119 // Removed policy.
101 expected.Erase("bbb"); 120 expectedPrevious.CopyFrom(expectedCurrent);
121 expectedCurrent.Erase("bbb");
102 provider0_.RemovePolicy("bbb"); 122 provider0_.RemovePolicy("bbb");
103 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 123 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
124 PolicyEquals(&expectedPrevious),
125 PolicyEquals(&expectedCurrent)));
104 provider0_.RefreshPolicies(); 126 provider0_.RefreshPolicies();
105 Mock::VerifyAndClearExpectations(&observer_); 127 Mock::VerifyAndClearExpectations(&observer_);
106 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 128
107 // Changed policy. 129 // Changed policy.
108 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 130 expectedPrevious.CopyFrom(expectedCurrent);
109 base::Value::CreateIntegerValue(789)); 131 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
132 base::Value::CreateIntegerValue(789));
110 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(789)); 133 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(789));
111 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 134 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
135 PolicyEquals(&expectedPrevious),
136 PolicyEquals(&expectedCurrent)));
112 provider0_.RefreshPolicies(); 137 provider0_.RefreshPolicies();
113 Mock::VerifyAndClearExpectations(&observer_); 138 Mock::VerifyAndClearExpectations(&observer_);
114 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 139
115 // No changes again. 140 // No changes again.
116 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); 141 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0);
117 provider0_.RefreshPolicies(); 142 provider0_.RefreshPolicies();
118 Mock::VerifyAndClearExpectations(&observer_); 143 Mock::VerifyAndClearExpectations(&observer_);
119 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 144 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent));
120 } 145 }
121 146
122 TEST_F(PolicyServiceTest, Priorities) { 147 TEST_F(PolicyServiceTest, Priorities) {
123 PolicyMap expected; 148 PolicyMap expected;
124 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 149 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
125 base::Value::CreateIntegerValue(13)); 150 base::Value::CreateIntegerValue(13));
126 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(AnyNumber()); 151 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(AnyNumber());
127 152
128 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 153 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
129 base::Value::CreateIntegerValue(0)); 154 base::Value::CreateIntegerValue(0));
130 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(0)); 155 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(0));
131 provider1_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(1)); 156 provider1_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(1));
132 provider2_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(2)); 157 provider2_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(2));
133 provider0_.RefreshPolicies(); 158 provider0_.RefreshPolicies();
134 provider1_.RefreshPolicies(); 159 provider1_.RefreshPolicies();
135 provider2_.RefreshPolicies(); 160 provider2_.RefreshPolicies();
136 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 161 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
137 162
138 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 163 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
139 base::Value::CreateIntegerValue(1)); 164 base::Value::CreateIntegerValue(1));
140 provider0_.RemovePolicy("aaa"); 165 provider0_.RemovePolicy("aaa");
141 provider0_.RefreshPolicies(); 166 provider0_.RefreshPolicies();
142 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 167 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
143 168
144 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 169 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
145 base::Value::CreateIntegerValue(2)); 170 base::Value::CreateIntegerValue(2));
146 provider1_.AddRecommendedPolicy("aaa", base::Value::CreateIntegerValue(1)); 171 provider1_.AddRecommendedPolicy("aaa", base::Value::CreateIntegerValue(1));
147 provider1_.RefreshPolicies(); 172 provider1_.RefreshPolicies();
148 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 173 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
149 } 174 }
150 175
151 } // namespace
152
153 } // namespace policy 176 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/policy_service_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698