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

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: 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
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 copy the PolicyMaps passed as arguments to an EXPECT_CALL of
31 // OnPolicyUpdated.
32 ACTION_P2(CopyPolicies, previous, current) {
33 previous->CopyFrom(arg2);
34 current->CopyFrom(arg3);
35 }
36
27 class PolicyServiceTest : public testing::Test { 37 class PolicyServiceTest : public testing::Test {
28 public: 38 public:
29 PolicyServiceTest() {} 39 PolicyServiceTest() {}
30 40
31 void SetUp() OVERRIDE { 41 void SetUp() OVERRIDE {
32 provider0_.AddMandatoryPolicy("pre", base::Value::CreateIntegerValue(13)); 42 provider0_.AddMandatoryPolicy("pre", base::Value::CreateIntegerValue(13));
33 provider0_.SetInitializationComplete(true); 43 provider0_.SetInitializationComplete(true);
34 provider1_.SetInitializationComplete(true); 44 provider1_.SetInitializationComplete(true);
35 provider2_.SetInitializationComplete(true); 45 provider2_.SetInitializationComplete(true);
36 PolicyServiceImpl::Providers providers; 46 PolicyServiceImpl::Providers providers;
(...skipping 29 matching lines...) Expand all
66 }; 76 };
67 77
68 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) { 78 TEST_F(PolicyServiceTest, LoadsPoliciesBeforeProvidersRefresh) {
69 PolicyMap expected; 79 PolicyMap expected;
70 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 80 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
71 base::Value::CreateIntegerValue(13)); 81 base::Value::CreateIntegerValue(13));
72 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 82 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
73 } 83 }
74 84
75 TEST_F(PolicyServiceTest, NotifyObservers) { 85 TEST_F(PolicyServiceTest, NotifyObservers) {
76 PolicyMap expected; 86 PolicyMap expectedPrevious;
77 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 87 expectedPrevious.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
78 base::Value::CreateIntegerValue(13)); 88 base::Value::CreateIntegerValue(13));
79 89
80 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 90 PolicyMap expectedCurrent;
81 base::Value::CreateIntegerValue(123)); 91 expectedCurrent.CopyFrom(expectedPrevious);
92 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
93 base::Value::CreateIntegerValue(123));
82 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(123)); 94 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(123));
83 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 95
96 PolicyMap previous;
97 PolicyMap current;
98 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", _, _))
99 .WillOnce(CopyPolicies(&previous, &current));
84 provider0_.RefreshPolicies(); 100 provider0_.RefreshPolicies();
85 Mock::VerifyAndClearExpectations(&observer_); 101 Mock::VerifyAndClearExpectations(&observer_);
86 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 102 EXPECT_TRUE(previous.Equals(expectedPrevious));
103 EXPECT_TRUE(current.Equals(expectedCurrent));
Mattias Nissler (ping if slow) 2012/04/23 14:20:44 This pattern does manually what you can achieve by
Joao da Silva 2012/04/23 14:53:19 Thanks for the tip, MATCHER is quite cool! PTAL.
104
87 // No changes. 105 // No changes.
88 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); 106 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0);
89 provider0_.RefreshPolicies(); 107 provider0_.RefreshPolicies();
90 Mock::VerifyAndClearExpectations(&observer_); 108 Mock::VerifyAndClearExpectations(&observer_);
91 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 109 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent));
110
92 // New policy. 111 // New policy.
93 expected.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 112 expectedPrevious.CopyFrom(current);
94 base::Value::CreateIntegerValue(456)); 113 expectedCurrent.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
114 base::Value::CreateIntegerValue(456));
95 provider0_.AddMandatoryPolicy("bbb", base::Value::CreateIntegerValue(456)); 115 provider0_.AddMandatoryPolicy("bbb", base::Value::CreateIntegerValue(456));
96 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 116 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", _, _))
117 .WillOnce(CopyPolicies(&previous, &current));
97 provider0_.RefreshPolicies(); 118 provider0_.RefreshPolicies();
98 Mock::VerifyAndClearExpectations(&observer_); 119 Mock::VerifyAndClearExpectations(&observer_);
99 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 120 EXPECT_TRUE(previous.Equals(expectedPrevious));
121 EXPECT_TRUE(current.Equals(expectedCurrent));
122
100 // Removed policy. 123 // Removed policy.
101 expected.Erase("bbb"); 124 expectedPrevious.CopyFrom(current);
125 expectedCurrent.Erase("bbb");
102 provider0_.RemovePolicy("bbb"); 126 provider0_.RemovePolicy("bbb");
103 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 127 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", _, _))
128 .WillOnce(CopyPolicies(&previous, &current));
104 provider0_.RefreshPolicies(); 129 provider0_.RefreshPolicies();
105 Mock::VerifyAndClearExpectations(&observer_); 130 Mock::VerifyAndClearExpectations(&observer_);
106 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 131 EXPECT_TRUE(previous.Equals(expectedPrevious));
132 EXPECT_TRUE(current.Equals(expectedCurrent));
133
107 // Changed policy. 134 // Changed policy.
108 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 135 expectedPrevious.CopyFrom(current);
109 base::Value::CreateIntegerValue(789)); 136 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
137 base::Value::CreateIntegerValue(789));
110 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(789)); 138 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(789));
111 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 139 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "", _, _))
140 .WillOnce(CopyPolicies(&previous, &current));
112 provider0_.RefreshPolicies(); 141 provider0_.RefreshPolicies();
113 Mock::VerifyAndClearExpectations(&observer_); 142 Mock::VerifyAndClearExpectations(&observer_);
114 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 143 EXPECT_TRUE(previous.Equals(expectedPrevious));
144 EXPECT_TRUE(current.Equals(expectedCurrent));
145
115 // No changes again. 146 // No changes again.
116 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); 147 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0);
117 provider0_.RefreshPolicies(); 148 provider0_.RefreshPolicies();
118 Mock::VerifyAndClearExpectations(&observer_); 149 Mock::VerifyAndClearExpectations(&observer_);
119 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 150 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent));
120 } 151 }
121 152
122 TEST_F(PolicyServiceTest, Priorities) { 153 TEST_F(PolicyServiceTest, Priorities) {
123 PolicyMap expected; 154 PolicyMap expected;
124 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 155 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
125 base::Value::CreateIntegerValue(13)); 156 base::Value::CreateIntegerValue(13));
126 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(AnyNumber()); 157 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(AnyNumber());
127 158
128 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 159 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
129 base::Value::CreateIntegerValue(0)); 160 base::Value::CreateIntegerValue(0));
130 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(0)); 161 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(0));
131 provider1_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(1)); 162 provider1_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(1));
132 provider2_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(2)); 163 provider2_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(2));
133 provider0_.RefreshPolicies(); 164 provider0_.RefreshPolicies();
134 provider1_.RefreshPolicies(); 165 provider1_.RefreshPolicies();
135 provider2_.RefreshPolicies(); 166 provider2_.RefreshPolicies();
136 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 167 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
137 168
138 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 169 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
139 base::Value::CreateIntegerValue(1)); 170 base::Value::CreateIntegerValue(1));
140 provider0_.RemovePolicy("aaa"); 171 provider0_.RemovePolicy("aaa");
141 provider0_.RefreshPolicies(); 172 provider0_.RefreshPolicies();
142 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 173 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
143 174
144 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 175 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
145 base::Value::CreateIntegerValue(2)); 176 base::Value::CreateIntegerValue(2));
146 provider1_.AddRecommendedPolicy("aaa", base::Value::CreateIntegerValue(1)); 177 provider1_.AddRecommendedPolicy("aaa", base::Value::CreateIntegerValue(1));
147 provider1_.RefreshPolicies(); 178 provider1_.RefreshPolicies();
148 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 179 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
149 } 180 }
150 181
151 } // namespace 182 } // namespace
152 183
153 } // namespace policy 184 } // namespace policy
OLDNEW
« chrome/browser/policy/policy_service_impl.cc ('K') | « 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