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

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

Issue 8952027: base::Callback-ify policy::DeviceManagementService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments. Created 8 years, 11 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 <ostream> 5 #include <ostream>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h"
8 #include "base/message_loop.h" 9 #include "base/message_loop.h"
9 #include "base/string_split.h" 10 #include "base/string_split.h"
10 #include "chrome/browser/policy/device_management_backend_impl.h" 11 #include "chrome/browser/policy/cloud_policy_constants.h"
11 #include "chrome/browser/policy/device_management_backend_mock.h"
12 #include "chrome/browser/policy/device_management_service.h" 12 #include "chrome/browser/policy/device_management_service.h"
13 #include "chrome/browser/policy/proto/device_management_constants.h"
14 #include "chrome/test/base/testing_browser_process.h" 13 #include "chrome/test/base/testing_browser_process.h"
15 #include "content/test/test_browser_thread.h" 14 #include "content/test/test_browser_thread.h"
16 #include "content/test/test_url_fetcher_factory.h" 15 #include "content/test/test_url_fetcher_factory.h"
17 #include "net/base/escape.h" 16 #include "net/base/escape.h"
18 #include "net/base/load_flags.h" 17 #include "net/base/load_flags.h"
19 #include "net/base/net_errors.h" 18 #include "net/base/net_errors.h"
20 #include "net/http/http_response_headers.h" 19 #include "net/http/http_response_headers.h"
21 #include "net/url_request/url_request_status.h" 20 #include "net/url_request/url_request_status.h"
22 #include "net/url_request/url_request_test_util.h" 21 #include "net/url_request/url_request_test_util.h"
23 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
24 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
25 24
26 using content::BrowserThread; 25 using content::BrowserThread;
27 using testing::InvokeWithoutArgs;
28 using testing::_; 26 using testing::_;
29 27
30 namespace em = enterprise_management; 28 namespace em = enterprise_management;
31 29
32 namespace policy { 30 namespace policy {
33 31
34 const char kServiceUrl[] = "https://example.com/management_service"; 32 const char kServiceUrl[] = "https://example.com/management_service";
35 33
36 // Encoded empty response messages for testing the error code paths. 34 // Encoded empty response messages for testing the error code paths.
37 const char kResponseEmpty[] = "\x08\x00"; 35 const char kResponseEmpty[] = "\x08\x00";
38 36
39 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1)) 37 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1))
40 38
41 // Some helper constants. 39 // Some helper constants.
42 const char kGaiaAuthToken[] = "gaia-auth-token"; 40 const char kGaiaAuthToken[] = "gaia-auth-token";
43 const char kOAuthToken[] = "oauth-token"; 41 const char kOAuthToken[] = "oauth-token";
44 const char kDMToken[] = "device-management-token"; 42 const char kDMToken[] = "device-management-token";
45 const char kDeviceId[] = "device-id"; 43 const char kClientID[] = "device-id";
46 44
47 // Unit tests for the device management policy service. The tests are run 45 // Unit tests for the device management policy service. The tests are run
48 // against a TestURLFetcherFactory that is used to short-circuit the request 46 // against a TestURLFetcherFactory that is used to short-circuit the request
49 // without calling into the actual network stack. 47 // without calling into the actual network stack.
50 template<typename TESTBASE> 48 class DeviceManagementServiceTestBase : public testing::Test {
51 class DeviceManagementServiceTestBase : public TESTBASE {
52 protected: 49 protected:
53 DeviceManagementServiceTestBase() 50 DeviceManagementServiceTestBase()
54 : ui_thread_(BrowserThread::UI, &loop_), 51 : ui_thread_(BrowserThread::UI, &loop_),
55 io_thread_(BrowserThread::IO, &loop_) { 52 io_thread_(BrowserThread::IO, &loop_) {
56 ResetService(); 53 ResetService();
57 InitializeService(); 54 InitializeService();
58 } 55 }
59 56
60 virtual void TearDown() { 57 virtual void TearDown() {
61 backend_.reset();
62 service_.reset(); 58 service_.reset();
63 loop_.RunAllPending(); 59 loop_.RunAllPending();
64 TESTBASE::TearDown();
65 } 60 }
66 61
67 void ResetService() { 62 void ResetService() {
68 backend_.reset();
69 service_.reset(new DeviceManagementService(kServiceUrl)); 63 service_.reset(new DeviceManagementService(kServiceUrl));
70 backend_.reset(service_->CreateBackend());
71 } 64 }
72 65
73 void InitializeService() { 66 void InitializeService() {
74 service_->ScheduleInitialization(0); 67 service_->ScheduleInitialization(0);
75 loop_.RunAllPending(); 68 loop_.RunAllPending();
76 } 69 }
77 70
71 DeviceManagementRequestJob* StartRegistrationJob() {
72 DeviceManagementRequestJob* job =
73 service_->CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION);
74 job->SetGaiaToken(kGaiaAuthToken);
75 job->SetOAuthToken(kOAuthToken);
76 job->SetClientID(kClientID);
77 job->GetRequest()->mutable_register_request();
78 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
79 base::Unretained(this)));
80 return job;
81 }
82
83 DeviceManagementRequestJob* StartUnregistrationJob() {
84 DeviceManagementRequestJob* job =
85 service_->CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION);
86 job->SetDMToken(kDMToken);
87 job->SetClientID(kClientID);
88 job->GetRequest()->mutable_unregister_request();
89 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
90 base::Unretained(this)));
91 return job;
92 }
93
94 DeviceManagementRequestJob* StartPolicyFetchJob() {
95 DeviceManagementRequestJob* job =
96 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH);
97 job->SetGaiaToken(kGaiaAuthToken);
98 job->SetOAuthToken(kOAuthToken);
99 job->SetClientID(kClientID);
100 em::PolicyFetchRequest* fetch_request =
101 job->GetRequest()->mutable_policy_request()->add_request();
102 fetch_request->set_policy_type(dm_protocol::kChromeUserPolicyType);
103 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
104 base::Unretained(this)));
105 return job;
106 }
107
108 DeviceManagementRequestJob* StartAutoEnrollmentJob() {
109 DeviceManagementRequestJob* job =
110 service_->CreateJob(DeviceManagementRequestJob::TYPE_AUTO_ENROLLMENT);
111 job->SetClientID(kClientID);
112 em::DeviceAutoEnrollmentRequest* request =
113 job->GetRequest()->mutable_auto_enrollment_request();
114 request->set_modulus(1);
115 request->set_remainder(0);
116 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
117 base::Unretained(this)));
118 return job;
119 }
120
121 void SendResponse(TestURLFetcher* fetcher,
122 const net::URLRequestStatus request_status,
123 int http_status,
124 const std::string& response) {
125 fetcher->set_url(GURL(kServiceUrl));
126 fetcher->set_status(request_status);
127 fetcher->set_response_code(http_status);
128 fetcher->SetResponseString(response);
129 fetcher->delegate()->OnURLFetchComplete(fetcher);
130 }
131
132 MOCK_METHOD2(OnJobDone, void(DeviceManagementStatus,
133 const em::DeviceManagementResponse&));
134
78 TestURLFetcherFactory factory_; 135 TestURLFetcherFactory factory_;
79 scoped_ptr<DeviceManagementService> service_; 136 scoped_ptr<DeviceManagementService> service_;
80 scoped_ptr<DeviceManagementBackend> backend_;
81 137
82 private: 138 private:
83 MessageLoopForUI loop_; 139 MessageLoopForUI loop_;
84 content::TestBrowserThread ui_thread_; 140 content::TestBrowserThread ui_thread_;
85 content::TestBrowserThread io_thread_; 141 content::TestBrowserThread io_thread_;
86 }; 142 };
87 143
88 struct FailedRequestParams { 144 struct FailedRequestParams {
89 FailedRequestParams(DeviceManagementBackend::ErrorCode expected_error, 145 FailedRequestParams(DeviceManagementStatus expected_status,
90 net::URLRequestStatus::Status request_status, 146 net::URLRequestStatus::Status request_status,
91 int http_status, 147 int http_status,
92 const std::string& response) 148 const std::string& response)
93 : expected_error_(expected_error), 149 : expected_status_(expected_status),
94 request_status_(request_status, 0), 150 request_status_(request_status, 0),
95 http_status_(http_status), 151 http_status_(http_status),
96 response_(response) {} 152 response_(response) {}
97 153
98 DeviceManagementBackend::ErrorCode expected_error_; 154 DeviceManagementStatus expected_status_;
99 net::URLRequestStatus request_status_; 155 net::URLRequestStatus request_status_;
100 int http_status_; 156 int http_status_;
101 std::string response_; 157 std::string response_;
102 }; 158 };
103 159
104 void PrintTo(const FailedRequestParams& params, std::ostream* os) { 160 void PrintTo(const FailedRequestParams& params, std::ostream* os) {
105 *os << "FailedRequestParams " << params.expected_error_ 161 *os << "FailedRequestParams " << params.expected_status_
106 << " " << params.request_status_.status() 162 << " " << params.request_status_.status()
107 << " " << params.http_status_; 163 << " " << params.http_status_;
108 } 164 }
109 165
110 // A parameterized test case for erroneous response situations, they're mostly 166 // A parameterized test case for erroneous response situations, they're mostly
111 // the same for all kinds of requests. 167 // the same for all kinds of requests.
112 class DeviceManagementServiceFailedRequestTest 168 class DeviceManagementServiceFailedRequestTest
113 : public DeviceManagementServiceTestBase< 169 : public DeviceManagementServiceTestBase,
114 testing::TestWithParam<FailedRequestParams> > { 170 public testing::WithParamInterface<FailedRequestParams> {
115 }; 171 };
116 172
117 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { 173 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) {
118 DeviceRegisterResponseDelegateMock mock; 174 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
119 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); 175 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
120 em::DeviceRegisterRequest request;
121 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
122 kDeviceId, request, &mock);
123 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 176 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
124 ASSERT_TRUE(fetcher); 177 ASSERT_TRUE(fetcher);
125 178
126 fetcher->set_url(GURL(kServiceUrl)); 179 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
127 fetcher->set_status(GetParam().request_status_); 180 GetParam().response_);
128 fetcher->set_response_code(GetParam().http_status_);
129 fetcher->SetResponseString(GetParam().response_);
130 fetcher->delegate()->OnURLFetchComplete(fetcher);
131 } 181 }
132 182
133 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { 183 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) {
134 DeviceUnregisterResponseDelegateMock mock; 184 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
135 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); 185 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
136 em::DeviceUnregisterRequest request;
137 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
138 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 186 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
139 ASSERT_TRUE(fetcher); 187 ASSERT_TRUE(fetcher);
140 188
141 fetcher->set_url(GURL(kServiceUrl)); 189 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
142 fetcher->set_status(GetParam().request_status_); 190 GetParam().response_);
143 fetcher->set_response_code(GetParam().http_status_);
144 fetcher->SetResponseString(GetParam().response_);
145 fetcher->delegate()->OnURLFetchComplete(fetcher);
146 } 191 }
147 192
148 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { 193 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) {
149 DevicePolicyResponseDelegateMock mock; 194 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
150 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); 195 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
151 em::DevicePolicyRequest request;
152 request.set_policy_scope(kChromePolicyScope);
153 em::DevicePolicySettingRequest* setting_request =
154 request.add_setting_request();
155 setting_request->set_key(kChromeDevicePolicySettingKey);
156 backend_->ProcessPolicyRequest(kDMToken, kDeviceId,
157 CloudPolicyDataStore::USER_AFFILIATION_NONE,
158 request, NULL, &mock);
159 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 196 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
160 ASSERT_TRUE(fetcher); 197 ASSERT_TRUE(fetcher);
161 198
162 fetcher->set_url(GURL(kServiceUrl)); 199 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
163 fetcher->set_status(GetParam().request_status_); 200 GetParam().response_);
164 fetcher->set_response_code(GetParam().http_status_);
165 fetcher->SetResponseString(GetParam().response_);
166 fetcher->delegate()->OnURLFetchComplete(fetcher);
167 } 201 }
168 202
169 TEST_P(DeviceManagementServiceFailedRequestTest, AutoEnrollmentRequest) { 203 TEST_P(DeviceManagementServiceFailedRequestTest, AutoEnrollmentRequest) {
170 DeviceAutoEnrollmentResponseDelegateMock mock; 204 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
171 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); 205 scoped_ptr<DeviceManagementRequestJob> request_job(StartAutoEnrollmentJob());
172 em::DeviceAutoEnrollmentRequest request;
173 request.set_modulus(1);
174 request.set_remainder(0);
175 backend_->ProcessAutoEnrollmentRequest(kDeviceId, request, &mock);
176 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 206 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
177 ASSERT_TRUE(fetcher); 207 ASSERT_TRUE(fetcher);
178 208
179 fetcher->set_url(GURL(kServiceUrl)); 209 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
180 fetcher->set_status(GetParam().request_status_); 210 GetParam().response_);
181 fetcher->set_response_code(GetParam().http_status_);
182 fetcher->SetResponseString(GetParam().response_);
183 fetcher->delegate()->OnURLFetchComplete(fetcher);
184 } 211 }
185 212
186 INSTANTIATE_TEST_CASE_P( 213 INSTANTIATE_TEST_CASE_P(
187 DeviceManagementServiceFailedRequestTestInstance, 214 DeviceManagementServiceFailedRequestTestInstance,
188 DeviceManagementServiceFailedRequestTest, 215 DeviceManagementServiceFailedRequestTest,
189 testing::Values( 216 testing::Values(
190 FailedRequestParams( 217 FailedRequestParams(
191 DeviceManagementBackend::kErrorRequestFailed, 218 DM_STATUS_REQUEST_FAILED,
192 net::URLRequestStatus::FAILED, 219 net::URLRequestStatus::FAILED,
193 200, 220 200,
194 PROTO_STRING(kResponseEmpty)), 221 PROTO_STRING(kResponseEmpty)),
195 FailedRequestParams( 222 FailedRequestParams(
196 DeviceManagementBackend::kErrorHttpStatus, 223 DM_STATUS_HTTP_STATUS_ERROR,
197 net::URLRequestStatus::SUCCESS, 224 net::URLRequestStatus::SUCCESS,
198 666, 225 666,
199 PROTO_STRING(kResponseEmpty)), 226 PROTO_STRING(kResponseEmpty)),
200 FailedRequestParams( 227 FailedRequestParams(
201 DeviceManagementBackend::kErrorResponseDecoding, 228 DM_STATUS_RESPONSE_DECODING_ERROR,
202 net::URLRequestStatus::SUCCESS, 229 net::URLRequestStatus::SUCCESS,
203 200, 230 200,
204 PROTO_STRING("Not a protobuf.")), 231 PROTO_STRING("Not a protobuf.")),
205 FailedRequestParams( 232 FailedRequestParams(
206 DeviceManagementBackend::kErrorServiceManagementNotSupported, 233 DM_STATUS_SERVICE_MANAGEMENT_NOT_SUPPORTED,
207 net::URLRequestStatus::SUCCESS, 234 net::URLRequestStatus::SUCCESS,
208 403, 235 403,
209 PROTO_STRING(kResponseEmpty)), 236 PROTO_STRING(kResponseEmpty)),
210 FailedRequestParams( 237 FailedRequestParams(
211 DeviceManagementBackend::kErrorServiceInvalidSerialNumber, 238 DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER,
212 net::URLRequestStatus::SUCCESS, 239 net::URLRequestStatus::SUCCESS,
213 405, 240 405,
214 PROTO_STRING(kResponseEmpty)), 241 PROTO_STRING(kResponseEmpty)),
215 FailedRequestParams( 242 FailedRequestParams(
216 DeviceManagementBackend::kErrorServiceDeviceIdConflict, 243 DM_STATUS_SERVICE_DEVICE_ID_CONFLICT,
217 net::URLRequestStatus::SUCCESS, 244 net::URLRequestStatus::SUCCESS,
218 409, 245 409,
219 PROTO_STRING(kResponseEmpty)), 246 PROTO_STRING(kResponseEmpty)),
220 FailedRequestParams( 247 FailedRequestParams(
221 DeviceManagementBackend::kErrorServiceDeviceNotFound, 248 DM_STATUS_SERVICE_DEVICE_NOT_FOUND,
222 net::URLRequestStatus::SUCCESS, 249 net::URLRequestStatus::SUCCESS,
223 410, 250 410,
224 PROTO_STRING(kResponseEmpty)), 251 PROTO_STRING(kResponseEmpty)),
225 // TODO(pastarmovj): Remove once DM server is deployed. 252 // TODO(pastarmovj): Remove once DM server is deployed.
226 FailedRequestParams( 253 FailedRequestParams(
227 DeviceManagementBackend::kErrorServiceDeviceNotFound, 254 DM_STATUS_SERVICE_DEVICE_NOT_FOUND,
228 net::URLRequestStatus::SUCCESS, 255 net::URLRequestStatus::SUCCESS,
229 901, 256 901,
230 PROTO_STRING(kResponseEmpty)), 257 PROTO_STRING(kResponseEmpty)),
231 FailedRequestParams( 258 FailedRequestParams(
232 DeviceManagementBackend::kErrorServiceManagementTokenInvalid, 259 DM_STATUS_SERVICE_MANAGEMENT_TOKEN_INVALID,
233 net::URLRequestStatus::SUCCESS, 260 net::URLRequestStatus::SUCCESS,
234 401, 261 401,
235 PROTO_STRING(kResponseEmpty)), 262 PROTO_STRING(kResponseEmpty)),
236 FailedRequestParams( 263 FailedRequestParams(
237 DeviceManagementBackend::kErrorRequestInvalid, 264 DM_STATUS_REQUEST_INVALID,
238 net::URLRequestStatus::SUCCESS, 265 net::URLRequestStatus::SUCCESS,
239 400, 266 400,
240 PROTO_STRING(kResponseEmpty)), 267 PROTO_STRING(kResponseEmpty)),
241 FailedRequestParams( 268 FailedRequestParams(
242 DeviceManagementBackend::kErrorTemporaryUnavailable, 269 DM_STATUS_TEMPORARY_UNAVAILABLE,
243 net::URLRequestStatus::SUCCESS, 270 net::URLRequestStatus::SUCCESS,
244 404, 271 404,
245 PROTO_STRING(kResponseEmpty)), 272 PROTO_STRING(kResponseEmpty)),
246 FailedRequestParams( 273 FailedRequestParams(
247 DeviceManagementBackend::kErrorServiceActivationPending, 274 DM_STATUS_SERVICE_ACTIVATION_PENDING,
248 net::URLRequestStatus::SUCCESS, 275 net::URLRequestStatus::SUCCESS,
249 412, 276 412,
250 PROTO_STRING(kResponseEmpty)), 277 PROTO_STRING(kResponseEmpty)),
251 // TODO(pastarmovj): Remove once DM server is deployed. 278 // TODO(pastarmovj): Remove once DM server is deployed.
252 FailedRequestParams( 279 FailedRequestParams(
253 DeviceManagementBackend::kErrorServiceActivationPending, 280 DM_STATUS_SERVICE_ACTIVATION_PENDING,
254 net::URLRequestStatus::SUCCESS, 281 net::URLRequestStatus::SUCCESS,
255 491, 282 491,
256 PROTO_STRING(kResponseEmpty)))); 283 PROTO_STRING(kResponseEmpty))));
257 284
258 // Simple query parameter parser for testing. 285 // Simple query parameter parser for testing.
259 class QueryParams { 286 class QueryParams {
260 public: 287 public:
261 explicit QueryParams(const std::string& query) { 288 explicit QueryParams(const std::string& query) {
262 base::SplitStringIntoKeyValuePairs(query, '=', '&', &params_); 289 base::SplitStringIntoKeyValuePairs(query, '=', '&', &params_);
263 } 290 }
(...skipping 25 matching lines...) Expand all
289 } 316 }
290 return found; 317 return found;
291 } 318 }
292 319
293 private: 320 private:
294 typedef std::vector<std::pair<std::string, std::string> > ParamMap; 321 typedef std::vector<std::pair<std::string, std::string> > ParamMap;
295 ParamMap params_; 322 ParamMap params_;
296 }; 323 };
297 324
298 class DeviceManagementServiceTest 325 class DeviceManagementServiceTest
299 : public DeviceManagementServiceTestBase<testing::Test> { 326 : public DeviceManagementServiceTestBase {
300 public:
301 void ResetBackend() {
302 backend_.reset();
303 }
304
305 protected: 327 protected:
306 void CheckURLAndQueryParams(const GURL& request_url, 328 void CheckURLAndQueryParams(const GURL& request_url,
307 const std::string& request_type, 329 const std::string& request_type,
308 const std::string& device_id) { 330 const std::string& device_id) {
309 const GURL service_url(kServiceUrl); 331 const GURL service_url(kServiceUrl);
310 EXPECT_EQ(service_url.scheme(), request_url.scheme()); 332 EXPECT_EQ(service_url.scheme(), request_url.scheme());
311 EXPECT_EQ(service_url.host(), request_url.host()); 333 EXPECT_EQ(service_url.host(), request_url.host());
312 EXPECT_EQ(service_url.port(), request_url.port()); 334 EXPECT_EQ(service_url.port(), request_url.port());
313 EXPECT_EQ(service_url.path(), request_url.path()); 335 EXPECT_EQ(service_url.path(), request_url.path());
314 336
315 QueryParams query_params(request_url.query()); 337 QueryParams query_params(request_url.query());
316 EXPECT_TRUE(query_params.Check( 338 EXPECT_TRUE(query_params.Check(dm_protocol::kParamRequest, request_type));
317 DeviceManagementBackendImpl::kParamRequest, request_type)); 339 EXPECT_TRUE(query_params.Check(dm_protocol::kParamDeviceID, device_id));
318 EXPECT_TRUE(query_params.Check( 340 EXPECT_TRUE(query_params.Check(dm_protocol::kParamDeviceType,
319 DeviceManagementBackendImpl::kParamDeviceID, device_id)); 341 dm_protocol::kValueDeviceType));
320 EXPECT_TRUE(query_params.Check( 342 EXPECT_TRUE(query_params.Check(dm_protocol::kParamAppType,
321 DeviceManagementBackendImpl::kParamDeviceType, 343 dm_protocol::kValueAppType));
322 DeviceManagementBackendImpl::kValueDeviceType));
323 EXPECT_TRUE(query_params.Check(
324 DeviceManagementBackendImpl::kParamAppType,
325 DeviceManagementBackendImpl::kValueAppType));
326 EXPECT_TRUE(query_params.Check(
327 DeviceManagementBackendImpl::kParamAgent,
328 DeviceManagementBackendImpl::GetAgentString()));
329 } 344 }
330 }; 345 };
331 346
332 MATCHER_P(MessageEquals, reference, "") { 347 MATCHER_P(MessageEquals, reference, "") {
333 std::string reference_data; 348 std::string reference_data;
334 std::string arg_data; 349 std::string arg_data;
335 return arg.SerializeToString(&arg_data) && 350 return arg.SerializeToString(&arg_data) &&
336 reference.SerializeToString(&reference_data) && 351 reference.SerializeToString(&reference_data) &&
337 arg_data == reference_data; 352 arg_data == reference_data;
338 } 353 }
339 354
340 TEST_F(DeviceManagementServiceTest, RegisterRequest) { 355 TEST_F(DeviceManagementServiceTest, RegisterRequest) {
341 DeviceRegisterResponseDelegateMock mock; 356 em::DeviceManagementResponse expected_response;
342 em::DeviceRegisterResponse expected_response; 357 expected_response.mutable_register_response()->
343 expected_response.set_device_management_token(kDMToken); 358 set_device_management_token(kDMToken);
344 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response))); 359 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS,
345 em::DeviceRegisterRequest request; 360 MessageEquals(expected_response)));
346 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, 361 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
347 kDeviceId, request, &mock);
348 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 362 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
349 ASSERT_TRUE(fetcher); 363 ASSERT_TRUE(fetcher);
350 364
351 CheckURLAndQueryParams(fetcher->GetOriginalURL(), 365 CheckURLAndQueryParams(fetcher->GetOriginalURL(),
352 DeviceManagementBackendImpl::kValueRequestRegister, 366 dm_protocol::kValueRequestRegister,
353 kDeviceId); 367 kClientID);
354 368
355 em::DeviceManagementRequest expected_request_wrapper; 369 std::string expected_data;
356 expected_request_wrapper.mutable_register_request()->CopyFrom(request); 370 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
357 std::string expected_request_data; 371 EXPECT_EQ(expected_data, fetcher->upload_data());
358 ASSERT_TRUE(expected_request_wrapper.SerializeToString(
359 &expected_request_data));
360 EXPECT_EQ(expected_request_data, fetcher->upload_data());
361 372
362 // Generate the response. 373 // Generate the response.
363 std::string response_data; 374 std::string response_data;
364 em::DeviceManagementResponse response_wrapper; 375 ASSERT_TRUE(expected_response.SerializeToString(&response_data));
365 response_wrapper.mutable_register_response()->CopyFrom(expected_response);
366 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
367 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 376 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
368 fetcher->set_url(GURL(kServiceUrl)); 377 SendResponse(fetcher, status, 200, response_data);
369 fetcher->set_status(status);
370 fetcher->set_response_code(200);
371 fetcher->SetResponseString(response_data);
372 fetcher->delegate()->OnURLFetchComplete(fetcher);
373 } 378 }
374 379
375 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { 380 TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
376 DeviceUnregisterResponseDelegateMock mock; 381 em::DeviceManagementResponse expected_response;
377 em::DeviceUnregisterResponse expected_response; 382 expected_response.mutable_unregister_response();
378 EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response))); 383 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS,
379 em::DeviceUnregisterRequest request; 384 MessageEquals(expected_response)));
380 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); 385 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
381 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 386 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
382 ASSERT_TRUE(fetcher); 387 ASSERT_TRUE(fetcher);
383 388
384 // Check the data the fetcher received. 389 // Check the data the fetcher received.
385 const GURL& request_url(fetcher->GetOriginalURL()); 390 const GURL& request_url(fetcher->GetOriginalURL());
386 const GURL service_url(kServiceUrl); 391 const GURL service_url(kServiceUrl);
387 EXPECT_EQ(service_url.scheme(), request_url.scheme()); 392 EXPECT_EQ(service_url.scheme(), request_url.scheme());
388 EXPECT_EQ(service_url.host(), request_url.host()); 393 EXPECT_EQ(service_url.host(), request_url.host());
389 EXPECT_EQ(service_url.port(), request_url.port()); 394 EXPECT_EQ(service_url.port(), request_url.port());
390 EXPECT_EQ(service_url.path(), request_url.path()); 395 EXPECT_EQ(service_url.path(), request_url.path());
391 396
392 CheckURLAndQueryParams(fetcher->GetOriginalURL(), 397 CheckURLAndQueryParams(fetcher->GetOriginalURL(),
393 DeviceManagementBackendImpl::kValueRequestUnregister, 398 dm_protocol::kValueRequestUnregister,
394 kDeviceId); 399 kClientID);
395 400
396 em::DeviceManagementRequest expected_request_wrapper; 401 std::string expected_data;
397 expected_request_wrapper.mutable_unregister_request()->CopyFrom(request); 402 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
398 std::string expected_request_data; 403 EXPECT_EQ(expected_data, fetcher->upload_data());
399 ASSERT_TRUE(expected_request_wrapper.SerializeToString(
400 &expected_request_data));
401 EXPECT_EQ(expected_request_data, fetcher->upload_data());
402 404
403 // Generate the response. 405 // Generate the response.
404 std::string response_data; 406 std::string response_data;
405 em::DeviceManagementResponse response_wrapper; 407 ASSERT_TRUE(expected_response.SerializeToString(&response_data));
406 response_wrapper.mutable_unregister_response()->CopyFrom(expected_response);
407 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
408 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 408 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
409 fetcher->set_url(GURL(kServiceUrl)); 409 SendResponse(fetcher, status, 200, response_data);
410 fetcher->set_status(status);
411 fetcher->set_response_code(200);
412 fetcher->SetResponseString(response_data);
413 fetcher->delegate()->OnURLFetchComplete(fetcher);
414 } 410 }
415 411
416 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { 412 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) {
417 DeviceRegisterResponseDelegateMock mock; 413 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
418 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0); 414 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
419 em::DeviceRegisterRequest request;
420 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
421 kDeviceId, request, &mock);
422 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 415 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
423 ASSERT_TRUE(fetcher); 416 ASSERT_TRUE(fetcher);
424 417
425 // There shouldn't be any callbacks. 418 // There shouldn't be any callbacks.
426 backend_.reset(); 419 request_job.reset();
427 } 420 }
428 421
429 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) { 422 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) {
430 DeviceUnregisterResponseDelegateMock mock; 423 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
431 EXPECT_CALL(mock, HandleUnregisterResponse(_)).Times(0); 424 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
432 em::DeviceUnregisterRequest request;
433 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
434 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 425 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
435 ASSERT_TRUE(fetcher); 426 ASSERT_TRUE(fetcher);
436 427
437 // There shouldn't be any callbacks. 428 // There shouldn't be any callbacks.
438 backend_.reset(); 429 request_job.reset();
439 } 430 }
440 431
441 TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) { 432 TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) {
442 DevicePolicyResponseDelegateMock mock; 433 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
443 EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0); 434 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
444 em::DevicePolicyRequest request;
445 request.set_policy_scope(kChromePolicyScope);
446 em::DevicePolicySettingRequest* setting_request =
447 request.add_setting_request();
448 setting_request->set_key(kChromeDevicePolicySettingKey);
449 setting_request->set_watermark("stale");
450 backend_->ProcessPolicyRequest(kDMToken, kDeviceId,
451 CloudPolicyDataStore::USER_AFFILIATION_NONE,
452 request, NULL, &mock);
453 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 435 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
454 ASSERT_TRUE(fetcher); 436 ASSERT_TRUE(fetcher);
455 437
456 // There shouldn't be any callbacks. 438 // There shouldn't be any callbacks.
457 backend_.reset(); 439 request_job.reset();
458 } 440 }
459 441
460 TEST_F(DeviceManagementServiceTest, JobQueueing) { 442 TEST_F(DeviceManagementServiceTest, JobQueueing) {
461 // Start with a non-initialized service. 443 // Start with a non-initialized service.
462 ResetService(); 444 ResetService();
463 445
446 em::DeviceManagementResponse expected_response;
447 expected_response.mutable_register_response()->
448 set_device_management_token(kDMToken);
449 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS,
450 MessageEquals(expected_response)));
451
464 // Make a request. We should not see any fetchers being created. 452 // Make a request. We should not see any fetchers being created.
465 DeviceRegisterResponseDelegateMock mock; 453 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
466 em::DeviceRegisterResponse expected_response;
467 expected_response.set_device_management_token(kDMToken);
468 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
469 em::DeviceRegisterRequest request;
470 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
471 kDeviceId, request, &mock);
472 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 454 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
473 ASSERT_FALSE(fetcher); 455 ASSERT_FALSE(fetcher);
474 456
475 // Now initialize the service. That should start the job. 457 // Now initialize the service. That should start the job.
476 InitializeService(); 458 InitializeService();
477 fetcher = factory_.GetFetcherByID(0); 459 fetcher = factory_.GetFetcherByID(0);
478 ASSERT_TRUE(fetcher); 460 ASSERT_TRUE(fetcher);
479 factory_.RemoveFetcherFromMap(0); 461 factory_.RemoveFetcherFromMap(0);
480 462
481 // Check that the request is processed as expected. 463 // Check that the request is processed as expected.
482 std::string response_data; 464 std::string response_data;
483 em::DeviceManagementResponse response_wrapper; 465 ASSERT_TRUE(expected_response.SerializeToString(&response_data));
484 response_wrapper.mutable_register_response()->CopyFrom(expected_response);
485 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
486 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 466 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
487 fetcher->set_url(GURL(kServiceUrl)); 467 SendResponse(fetcher, status, 200, response_data);
488 fetcher->set_status(status);
489 fetcher->set_response_code(200);
490 fetcher->SetResponseString(response_data);
491 fetcher->delegate()->OnURLFetchComplete(fetcher);
492 } 468 }
493 469
494 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) { 470 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) {
495 DevicePolicyResponseDelegateMock mock; 471 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
496 EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0); 472 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
497 em::DevicePolicyRequest request;
498 request.set_policy_scope(kChromePolicyScope);
499 em::DevicePolicySettingRequest* setting_request =
500 request.add_setting_request();
501 setting_request->set_key(kChromeDevicePolicySettingKey);
502 setting_request->set_watermark("stale");
503 backend_->ProcessPolicyRequest(kDMToken, kDeviceId,
504 CloudPolicyDataStore::USER_AFFILIATION_NONE,
505 request, NULL, &mock);
506 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 473 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
507 ASSERT_TRUE(fetcher); 474 ASSERT_TRUE(fetcher);
508 475
509 // Shutdown the service and cancel the job afterwards. 476 // Shutdown the service and cancel the job afterwards.
510 service_->Shutdown(); 477 service_->Shutdown();
511 backend_.reset(); 478 request_job.reset();
479 }
480
481 ACTION_P(ResetPointer, pointer) {
482 pointer->reset();
512 } 483 }
513 484
514 TEST_F(DeviceManagementServiceTest, CancelDuringCallback) { 485 TEST_F(DeviceManagementServiceTest, CancelDuringCallback) {
515 // Make a request. 486 // Make a request.
516 DeviceRegisterResponseDelegateMock mock; 487 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
517 EXPECT_CALL(mock, OnError(_))
518 .WillOnce(InvokeWithoutArgs(this,
519 &DeviceManagementServiceTest::ResetBackend))
520 .RetiresOnSaturation();
521 em::DeviceRegisterRequest request;
522 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
523 kDeviceId, request, &mock);
524 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 488 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
525 ASSERT_TRUE(fetcher); 489 ASSERT_TRUE(fetcher);
526 490
491 EXPECT_CALL(*this, OnJobDone(_, _))
492 .WillOnce(ResetPointer(&request_job));
493
527 // Generate a callback. 494 // Generate a callback.
528 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 495 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
529 fetcher->set_url(GURL(kServiceUrl)); 496 SendResponse(fetcher, status, 500, "");
530 fetcher->set_status(status);
531 fetcher->set_response_code(500);
532 fetcher->delegate()->OnURLFetchComplete(fetcher);
533 497
534 // Backend should have been reset. 498 // Job should have been reset.
535 EXPECT_FALSE(backend_.get()); 499 EXPECT_FALSE(request_job.get());
536 } 500 }
537 501
538 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) { 502 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) {
539 // Make a request. 503 // Make a request.
540 DeviceRegisterResponseDelegateMock mock; 504 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
541 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
542 EXPECT_CALL(mock, OnError(_)).Times(0);
543 505
544 em::DeviceRegisterRequest request; 506 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
545 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
546 kDeviceId, request, &mock);
547 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 507 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
548 ASSERT_TRUE(fetcher); 508 ASSERT_TRUE(fetcher);
549 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0); 509 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0);
550 const GURL original_url(fetcher->GetOriginalURL()); 510 const GURL original_url(fetcher->GetOriginalURL());
551 const std::string upload_data(fetcher->upload_data()); 511 const std::string upload_data(fetcher->upload_data());
552 512
553 // Generate a callback with a proxy failure. 513 // Generate a callback with a proxy failure.
554 net::URLRequestStatus status(net::URLRequestStatus::FAILED, 514 net::URLRequestStatus status(net::URLRequestStatus::FAILED,
555 net::ERR_PROXY_CONNECTION_FAILED); 515 net::ERR_PROXY_CONNECTION_FAILED);
556 fetcher->set_url(GURL(kServiceUrl)); 516 SendResponse(fetcher, status, 200, "");
557 fetcher->set_status(status);
558 fetcher->set_response_code(200);
559 fetcher->delegate()->OnURLFetchComplete(fetcher);
560 517
561 // Verify that a new URLFetcher was started that bypasses the proxy. 518 // Verify that a new URLFetcher was started that bypasses the proxy.
562 fetcher = factory_.GetFetcherByID(0); 519 fetcher = factory_.GetFetcherByID(0);
563 ASSERT_TRUE(fetcher); 520 ASSERT_TRUE(fetcher);
564 EXPECT_TRUE(fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY); 521 EXPECT_TRUE(fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY);
565 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); 522 EXPECT_EQ(original_url, fetcher->GetOriginalURL());
566 EXPECT_EQ(upload_data, fetcher->upload_data()); 523 EXPECT_EQ(upload_data, fetcher->upload_data());
567 } 524 }
568 525
569 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) { 526 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) {
570 // Make a request. 527 // Make a request.
571 DeviceRegisterResponseDelegateMock mock; 528 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
572 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
573 EXPECT_CALL(mock, OnError(_)).Times(0);
574 529
575 em::DeviceRegisterRequest request; 530 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
576 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
577 kDeviceId, request, &mock);
578 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 531 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
579 ASSERT_TRUE(fetcher); 532 ASSERT_TRUE(fetcher);
580 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0); 533 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0);
581 const GURL original_url(fetcher->GetOriginalURL()); 534 const GURL original_url(fetcher->GetOriginalURL());
582 const std::string upload_data(fetcher->upload_data()); 535 const std::string upload_data(fetcher->upload_data());
583 fetcher->set_was_fetched_via_proxy(true); 536 fetcher->set_was_fetched_via_proxy(true);
584 scoped_refptr<net::HttpResponseHeaders> headers; 537 scoped_refptr<net::HttpResponseHeaders> headers;
585 headers = new net::HttpResponseHeaders( 538 headers = new net::HttpResponseHeaders(
586 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0"); 539 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0");
587 fetcher->set_response_headers(headers); 540 fetcher->set_response_headers(headers);
588 541
589 // Generate a callback with a valid http response, that was generated by 542 // Generate a callback with a valid http response, that was generated by
590 // a bad/wrong proxy. 543 // a bad/wrong proxy.
591 net::URLRequestStatus status; 544 net::URLRequestStatus status;
592 fetcher->set_url(GURL(kServiceUrl)); 545 SendResponse(fetcher, status, 200, "");
593 fetcher->set_status(status);
594 fetcher->set_response_code(200);
595 fetcher->delegate()->OnURLFetchComplete(fetcher);
596 546
597 // Verify that a new URLFetcher was started that bypasses the proxy. 547 // Verify that a new URLFetcher was started that bypasses the proxy.
598 fetcher = factory_.GetFetcherByID(0); 548 fetcher = factory_.GetFetcherByID(0);
599 ASSERT_TRUE(fetcher); 549 ASSERT_TRUE(fetcher);
600 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) != 0); 550 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) != 0);
601 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); 551 EXPECT_EQ(original_url, fetcher->GetOriginalURL());
602 EXPECT_EQ(upload_data, fetcher->upload_data()); 552 EXPECT_EQ(upload_data, fetcher->upload_data());
603 } 553 }
604 554
605 } // namespace policy 555 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/device_management_service.cc ('k') | chrome/browser/policy/mock_device_management_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698