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

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: Use a MATCHER_P to compare PolicyMaps, removed redundant comment 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 expectec values.
Mattias Nissler (ping if slow) 2012/04/23 15:08:55 nit: expected
Joao da Silva 2012/04/23 15:22:10 Done.
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
97 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
98 PolicyEquals(&expectedPrevious),
99 PolicyEquals(&expectedCurrent)));
84 provider0_.RefreshPolicies(); 100 provider0_.RefreshPolicies();
85 Mock::VerifyAndClearExpectations(&observer_); 101 Mock::VerifyAndClearExpectations(&observer_);
86 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 102
87 // No changes. 103 // No changes.
88 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); 104 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0);
89 provider0_.RefreshPolicies(); 105 provider0_.RefreshPolicies();
90 Mock::VerifyAndClearExpectations(&observer_); 106 Mock::VerifyAndClearExpectations(&observer_);
91 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 107 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent));
108
92 // New policy. 109 // New policy.
93 expected.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 110 expectedPrevious.CopyFrom(expectedCurrent);
94 base::Value::CreateIntegerValue(456)); 111 expectedCurrent.Set("bbb", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
112 base::Value::CreateIntegerValue(456));
Mattias Nissler (ping if slow) 2012/04/23 15:08:55 indentation
Joao da Silva 2012/04/23 15:22:10 Done.
95 provider0_.AddMandatoryPolicy("bbb", base::Value::CreateIntegerValue(456)); 113 provider0_.AddMandatoryPolicy("bbb", base::Value::CreateIntegerValue(456));
Mattias Nissler (ping if slow) 2012/04/23 15:08:55 nit: You have added a newline in the corresponding
Joao da Silva 2012/04/23 15:22:10 Removed line above.
96 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 114 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
115 PolicyEquals(&expectedPrevious),
116 PolicyEquals(&expectedCurrent)));
97 provider0_.RefreshPolicies(); 117 provider0_.RefreshPolicies();
98 Mock::VerifyAndClearExpectations(&observer_); 118 Mock::VerifyAndClearExpectations(&observer_);
99 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 119
100 // Removed policy. 120 // Removed policy.
101 expected.Erase("bbb"); 121 expectedPrevious.CopyFrom(expectedCurrent);
122 expectedCurrent.Erase("bbb");
102 provider0_.RemovePolicy("bbb"); 123 provider0_.RemovePolicy("bbb");
103 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 124 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
125 PolicyEquals(&expectedPrevious),
126 PolicyEquals(&expectedCurrent)));
104 provider0_.RefreshPolicies(); 127 provider0_.RefreshPolicies();
105 Mock::VerifyAndClearExpectations(&observer_); 128 Mock::VerifyAndClearExpectations(&observer_);
106 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 129
107 // Changed policy. 130 // Changed policy.
108 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 131 expectedPrevious.CopyFrom(expectedCurrent);
109 base::Value::CreateIntegerValue(789)); 132 expectedCurrent.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
133 base::Value::CreateIntegerValue(789));
110 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(789)); 134 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(789));
111 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "")).Times(1); 135 EXPECT_CALL(observer_, OnPolicyUpdated(POLICY_DOMAIN_CHROME, "",
136 PolicyEquals(&expectedPrevious),
137 PolicyEquals(&expectedCurrent)));
112 provider0_.RefreshPolicies(); 138 provider0_.RefreshPolicies();
113 Mock::VerifyAndClearExpectations(&observer_); 139 Mock::VerifyAndClearExpectations(&observer_);
114 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 140
115 // No changes again. 141 // No changes again.
116 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(0); 142 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(0);
117 provider0_.RefreshPolicies(); 143 provider0_.RefreshPolicies();
118 Mock::VerifyAndClearExpectations(&observer_); 144 Mock::VerifyAndClearExpectations(&observer_);
119 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 145 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expectedCurrent));
120 } 146 }
121 147
122 TEST_F(PolicyServiceTest, Priorities) { 148 TEST_F(PolicyServiceTest, Priorities) {
123 PolicyMap expected; 149 PolicyMap expected;
124 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 150 expected.Set("pre", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
125 base::Value::CreateIntegerValue(13)); 151 base::Value::CreateIntegerValue(13));
126 EXPECT_CALL(observer_, OnPolicyUpdated(_, _)).Times(AnyNumber()); 152 EXPECT_CALL(observer_, OnPolicyUpdated(_, _, _, _)).Times(AnyNumber());
127 153
128 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 154 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
129 base::Value::CreateIntegerValue(0)); 155 base::Value::CreateIntegerValue(0));
130 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(0)); 156 provider0_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(0));
131 provider1_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(1)); 157 provider1_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(1));
132 provider2_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(2)); 158 provider2_.AddMandatoryPolicy("aaa", base::Value::CreateIntegerValue(2));
133 provider0_.RefreshPolicies(); 159 provider0_.RefreshPolicies();
134 provider1_.RefreshPolicies(); 160 provider1_.RefreshPolicies();
135 provider2_.RefreshPolicies(); 161 provider2_.RefreshPolicies();
136 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 162 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
137 163
138 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 164 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
139 base::Value::CreateIntegerValue(1)); 165 base::Value::CreateIntegerValue(1));
140 provider0_.RemovePolicy("aaa"); 166 provider0_.RemovePolicy("aaa");
141 provider0_.RefreshPolicies(); 167 provider0_.RefreshPolicies();
142 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 168 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
143 169
144 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 170 expected.Set("aaa", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
145 base::Value::CreateIntegerValue(2)); 171 base::Value::CreateIntegerValue(2));
146 provider1_.AddRecommendedPolicy("aaa", base::Value::CreateIntegerValue(1)); 172 provider1_.AddRecommendedPolicy("aaa", base::Value::CreateIntegerValue(1));
147 provider1_.RefreshPolicies(); 173 provider1_.RefreshPolicies();
148 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected)); 174 EXPECT_TRUE(VerifyPolicies(POLICY_DOMAIN_CHROME, "", expected));
149 } 175 }
150 176
151 } // namespace
152
153 } // namespace policy 177 } // 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