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

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

Issue 5338004: Cleanup mock device management backend (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge with latest Created 10 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
« no previous file with comments | « no previous file | chrome/browser/policy/device_token_fetcher_unittest.cc » ('j') | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "base/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/scoped_temp_dir.h" 6 #include "base/scoped_temp_dir.h"
7 #include "chrome/browser/browser_thread.h" 7 #include "chrome/browser/browser_thread.h"
8 #include "chrome/browser/net/gaia/token_service.h" 8 #include "chrome/browser/net/gaia/token_service.h"
9 #include "chrome/browser/policy/configuration_policy_pref_store.h" 9 #include "chrome/browser/policy/configuration_policy_pref_store.h"
10 #include "chrome/browser/policy/device_management_policy_provider.h" 10 #include "chrome/browser/policy/device_management_policy_provider.h"
11 #include "chrome/browser/policy/mock_configuration_policy_store.h" 11 #include "chrome/browser/policy/mock_configuration_policy_store.h"
12 #include "chrome/browser/policy/mock_device_management_backend.h" 12 #include "chrome/browser/policy/mock_device_management_backend.h"
13 #include "chrome/common/net/gaia/gaia_constants.h" 13 #include "chrome/common/net/gaia/gaia_constants.h"
14 #include "chrome/common/notification_service.h" 14 #include "chrome/common/notification_service.h"
15 #include "chrome/common/policy_constants.h" 15 #include "chrome/common/policy_constants.h"
16 #include "chrome/test/mock_notification_observer.h" 16 #include "chrome/test/mock_notification_observer.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 const char kTestToken[] = "device_policy_provider_test_auth_token"; 19 const char kTestToken[] = "device_policy_provider_test_auth_token";
20 20
21 namespace policy { 21 namespace policy {
22 22
23 using ::testing::_; 23 using ::testing::_;
24 using ::testing::InSequence;
24 using ::testing::Mock; 25 using ::testing::Mock;
25 26
26 class DeviceManagementPolicyProviderTest : public testing::Test { 27 class DeviceManagementPolicyProviderTest : public testing::Test {
27 public: 28 public:
28 DeviceManagementPolicyProviderTest() 29 DeviceManagementPolicyProviderTest()
29 : ui_thread_(BrowserThread::UI, &loop_), 30 : ui_thread_(BrowserThread::UI, &loop_),
30 file_thread_(BrowserThread::FILE, &loop_) {} 31 file_thread_(BrowserThread::FILE, &loop_) {}
31 32
32 virtual ~DeviceManagementPolicyProviderTest() {} 33 virtual ~DeviceManagementPolicyProviderTest() {}
33 34
34 virtual void SetUp() { 35 virtual void SetUp() {
35 EXPECT_TRUE(storage_dir_.CreateUniqueTempDir()); 36 EXPECT_TRUE(storage_dir_.CreateUniqueTempDir());
36 CreateNewBackend(); 37 CreateNewBackend();
37 CreateNewProvider(); 38 CreateNewProvider();
38 } 39 }
39 40
40 void CreateNewBackend() { 41 void CreateNewBackend() {
41 backend_ = new MockDeviceManagementBackend; 42 backend_ = new MockDeviceManagementBackend;
42 backend_->AddBooleanPolicy(key::kDisableSpdy, true);
43 } 43 }
44 44
45 void CreateNewProvider() { 45 void CreateNewProvider() {
46 token_service_.reset(new TokenService); 46 token_service_.reset(new TokenService);
47 provider_.reset(new DeviceManagementPolicyProvider( 47 provider_.reset(new DeviceManagementPolicyProvider(
48 ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(), 48 ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
49 backend_, 49 backend_,
50 token_service_.get(), 50 token_service_.get(),
51 storage_dir_.path())); 51 storage_dir_.path()));
52 loop_.RunAllPending(); 52 loop_.RunAllPending();
53 } 53 }
54 54
55 void SimulateSuccessfulLoginAndRunPending() { 55 void SimulateSuccessfulLoginAndRunPending() {
56 loop_.RunAllPending(); 56 loop_.RunAllPending();
57 token_service_->IssueAuthTokenForTest( 57 token_service_->IssueAuthTokenForTest(
58 GaiaConstants::kDeviceManagementService, kTestToken); 58 GaiaConstants::kDeviceManagementService, kTestToken);
59 loop_.RunAllPending(); 59 loop_.RunAllPending();
60 } 60 }
61 61
62 void SimulateSuccessfulInitialPolicyFetch() { 62 void SimulateSuccessfulInitialPolicyFetch() {
63 MockConfigurationPolicyStore store; 63 MockConfigurationPolicyStore store;
64 backend_->AllShouldSucceed(); 64 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
65 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); 65 MockDeviceManagementBackendSucceedRegister());
66 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1); 66 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
67 MockDeviceManagementBackendSucceedBooleanPolicy(
68 key::kDisableSpdy, true));
67 SimulateSuccessfulLoginAndRunPending(); 69 SimulateSuccessfulLoginAndRunPending();
68 EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1); 70 EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1);
69 provider_->Provide(&store); 71 provider_->Provide(&store);
70 ASSERT_EQ(1U, store.policy_map().size()); 72 ASSERT_EQ(1U, store.policy_map().size());
71 Mock::VerifyAndClearExpectations(backend_); 73 Mock::VerifyAndClearExpectations(backend_);
72 Mock::VerifyAndClearExpectations(&store); 74 Mock::VerifyAndClearExpectations(&store);
73 } 75 }
74 76
75 virtual void TearDown() { 77 virtual void TearDown() {
76 loop_.RunAllPending(); 78 loop_.RunAllPending();
(...skipping 21 matching lines...) Expand all
98 ScopedTempDir storage_dir_; 100 ScopedTempDir storage_dir_;
99 scoped_ptr<TokenService> token_service_; 101 scoped_ptr<TokenService> token_service_;
100 102
101 DISALLOW_COPY_AND_ASSIGN(DeviceManagementPolicyProviderTest); 103 DISALLOW_COPY_AND_ASSIGN(DeviceManagementPolicyProviderTest);
102 }; 104 };
103 105
104 // If there's no login and no previously-fetched policy, the provider should 106 // If there's no login and no previously-fetched policy, the provider should
105 // provide an empty policy. 107 // provide an empty policy.
106 TEST_F(DeviceManagementPolicyProviderTest, InitialProvideNoLogin) { 108 TEST_F(DeviceManagementPolicyProviderTest, InitialProvideNoLogin) {
107 MockConfigurationPolicyStore store; 109 MockConfigurationPolicyStore store;
108 backend_->AllShouldSucceed();
109 EXPECT_CALL(store, Apply(_, _)).Times(0); 110 EXPECT_CALL(store, Apply(_, _)).Times(0);
110 provider_->Provide(&store); 111 provider_->Provide(&store);
111 EXPECT_TRUE(store.policy_map().empty()); 112 EXPECT_TRUE(store.policy_map().empty());
112 } 113 }
113 114
114 // If the login is successful and there's no previously-fetched policy, the 115 // If the login is successful and there's no previously-fetched policy, the
115 // policy should be fetched from the server and should be available the first 116 // policy should be fetched from the server and should be available the first
116 // time the Provide method is called. 117 // time the Provide method is called.
117 TEST_F(DeviceManagementPolicyProviderTest, InitialProvideWithLogin) { 118 TEST_F(DeviceManagementPolicyProviderTest, InitialProvideWithLogin) {
118 SimulateSuccessfulInitialPolicyFetch(); 119 SimulateSuccessfulInitialPolicyFetch();
119 } 120 }
120 121
121 // If the login succeeds but the device management backend is unreachable, 122 // If the login succeed but the device management backend is unreachable,
122 // there should be no policy provided if there's no previously-fetched policy, 123 // there should be no policy provided if there's no previously-fetched policy,
123 TEST_F(DeviceManagementPolicyProviderTest, EmptyProvideWithFailedBackend) { 124 TEST_F(DeviceManagementPolicyProviderTest, EmptyProvideWithFailedBackend) {
124 MockConfigurationPolicyStore store; 125 MockConfigurationPolicyStore store;
125 backend_->AllShouldFail(); 126 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
126 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); 127 MockDeviceManagementBackendFailRegister(
128 DeviceManagementBackend::kErrorRequestFailed));
127 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(0); 129 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(0);
128 SimulateSuccessfulLoginAndRunPending(); 130 SimulateSuccessfulLoginAndRunPending();
129 EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(0); 131 EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(0);
130 provider_->Provide(&store); 132 provider_->Provide(&store);
131 EXPECT_TRUE(store.policy_map().empty()); 133 EXPECT_TRUE(store.policy_map().empty());
132 } 134 }
133 135
134 // If a policy has been fetched previously, if should be available even before 136 // If a policy has been fetched previously, if should be available even before
135 // the login succeeds or the device management backend is available. 137 // the login succeeds or the device management backend is available.
136 TEST_F(DeviceManagementPolicyProviderTest, SecondProvide) { 138 TEST_F(DeviceManagementPolicyProviderTest, SecondProvide) {
137 // Pre-fetch and persist a policy 139 // Pre-fetch and persist a policy
138 SimulateSuccessfulInitialPolicyFetch(); 140 SimulateSuccessfulInitialPolicyFetch();
139 141
140 // Simulate a app relaunch by constructing a new provider. Policy should be 142 // Simulate a app relaunch by constructing a new provider. Policy should be
141 // refreshed (since that might be the purpose of the app relaunch). 143 // refreshed (since that might be the purpose of the app relaunch).
142 CreateNewBackend(); 144 CreateNewBackend();
143 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1); 145 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
146 MockDeviceManagementBackendSucceedBooleanPolicy(
147 key::kDisableSpdy, true));
144 CreateNewProvider(); 148 CreateNewProvider();
145 Mock::VerifyAndClearExpectations(backend_); 149 Mock::VerifyAndClearExpectations(backend_);
146 150
147 // Simulate another app relaunch, this time against a failing backend. 151 // Simulate another app relaunch, this time against a failing backend.
148 // Cached policy should still be available. 152 // Cached policy should still be available.
149 CreateNewBackend(); 153 CreateNewBackend();
150 backend_->AllShouldFail();
151 MockConfigurationPolicyStore store; 154 MockConfigurationPolicyStore store;
152 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1); 155 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
156 MockDeviceManagementBackendFailPolicy(
157 DeviceManagementBackend::kErrorRequestFailed));
153 CreateNewProvider(); 158 CreateNewProvider();
154 SimulateSuccessfulLoginAndRunPending(); 159 SimulateSuccessfulLoginAndRunPending();
155 EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1); 160 EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1);
156 provider_->Provide(&store); 161 provider_->Provide(&store);
157 ASSERT_EQ(1U, store.policy_map().size()); 162 ASSERT_EQ(1U, store.policy_map().size());
158 } 163 }
159 164
160 // When policy is successfully fetched from the device management server, it 165 // When policy is successfully fetched from the device management server, it
161 // should force a policy refresh. 166 // should force a policy refresh.
162 TEST_F(DeviceManagementPolicyProviderTest, FetchTriggersRefresh) { 167 TEST_F(DeviceManagementPolicyProviderTest, FetchTriggersRefresh) {
163 MockNotificationObserver observer; 168 MockNotificationObserver observer;
164 NotificationRegistrar registrar; 169 NotificationRegistrar registrar;
165 registrar.Add(&observer, 170 registrar.Add(&observer,
166 NotificationType::POLICY_CHANGED, 171 NotificationType::POLICY_CHANGED,
167 NotificationService::AllSources()); 172 NotificationService::AllSources());
168 EXPECT_CALL(observer, Observe(_, _, _)).Times(1); 173 EXPECT_CALL(observer, Observe(_, _, _)).Times(1);
169 SimulateSuccessfulInitialPolicyFetch(); 174 SimulateSuccessfulInitialPolicyFetch();
170 } 175 }
171 176
172 TEST_F(DeviceManagementPolicyProviderTest, ErrorCausesNewRequest) { 177 TEST_F(DeviceManagementPolicyProviderTest, ErrorCausesNewRequest) {
173 backend_->RegisterFailsOncePolicyFailsTwice(); 178 InSequence s;
174 SetRefreshDelays(provider_.get(), 1000 * 1000, 0, 0, 0); 179 SetRefreshDelays(provider_.get(), 1000 * 1000, 0, 0, 0);
175 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(2); 180 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
176 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(3); 181 MockDeviceManagementBackendFailRegister(
182 DeviceManagementBackend::kErrorRequestFailed));
183 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
184 MockDeviceManagementBackendSucceedRegister());
185 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
186 MockDeviceManagementBackendFailPolicy(
187 DeviceManagementBackend::kErrorRequestFailed));
188 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
189 MockDeviceManagementBackendFailPolicy(
190 DeviceManagementBackend::kErrorRequestFailed));
191 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
192 MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true));
177 SimulateSuccessfulLoginAndRunPending(); 193 SimulateSuccessfulLoginAndRunPending();
178 } 194 }
179 195
180 TEST_F(DeviceManagementPolicyProviderTest, RefreshPolicies) { 196 TEST_F(DeviceManagementPolicyProviderTest, RefreshPolicies) {
181 backend_->AllWorksFirstPolicyFailsLater(); 197 InSequence s;
182 SetRefreshDelays(provider_.get(), 0, 0, 1000 * 1000, 1000); 198 SetRefreshDelays(provider_.get(), 0, 0, 1000 * 1000, 1000);
183 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); 199 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
184 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(4); 200 MockDeviceManagementBackendSucceedRegister());
201 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
202 MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true));
203 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
204 MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true));
205 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
206 MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true));
207 EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
208 MockDeviceManagementBackendFailPolicy(
209 DeviceManagementBackend::kErrorRequestFailed));
185 SimulateSuccessfulLoginAndRunPending(); 210 SimulateSuccessfulLoginAndRunPending();
186 } 211 }
187 212
188 } // namespace policy 213 } // namespace policy
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/policy/device_token_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698