OLD | NEW |
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/bind.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 // Encoded empty response messages for testing the error code paths. | 35 // Encoded empty response messages for testing the error code paths. |
36 const char kResponseEmpty[] = "\x08\x00"; | 36 const char kResponseEmpty[] = "\x08\x00"; |
37 | 37 |
38 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1)) | 38 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1)) |
39 | 39 |
40 // Some helper constants. | 40 // Some helper constants. |
41 const char kGaiaAuthToken[] = "gaia-auth-token"; | 41 const char kGaiaAuthToken[] = "gaia-auth-token"; |
42 const char kOAuthToken[] = "oauth-token"; | 42 const char kOAuthToken[] = "oauth-token"; |
43 const char kDMToken[] = "device-management-token"; | 43 const char kDMToken[] = "device-management-token"; |
44 const char kClientID[] = "device-id"; | 44 const char kClientID[] = "device-id"; |
| 45 const char kRobotAuthCode[] = "robot-oauth-auth-code"; |
45 | 46 |
46 // Unit tests for the device management policy service. The tests are run | 47 // Unit tests for the device management policy service. The tests are run |
47 // against a TestURLFetcherFactory that is used to short-circuit the request | 48 // against a TestURLFetcherFactory that is used to short-circuit the request |
48 // without calling into the actual network stack. | 49 // without calling into the actual network stack. |
49 class DeviceManagementServiceTestBase : public testing::Test { | 50 class DeviceManagementServiceTestBase : public testing::Test { |
50 protected: | 51 protected: |
51 DeviceManagementServiceTestBase() | 52 DeviceManagementServiceTestBase() |
52 : ui_thread_(BrowserThread::UI, &loop_), | 53 : ui_thread_(BrowserThread::UI, &loop_), |
53 io_thread_(BrowserThread::IO, &loop_) { | 54 io_thread_(BrowserThread::IO, &loop_) { |
54 ResetService(); | 55 ResetService(); |
(...skipping 25 matching lines...) Expand all Loading... |
80 job->SetOAuthToken(kOAuthToken); | 81 job->SetOAuthToken(kOAuthToken); |
81 job->SetClientID(kClientID); | 82 job->SetClientID(kClientID); |
82 job->GetRequest()->mutable_register_request(); | 83 job->GetRequest()->mutable_register_request(); |
83 job->SetRetryCallback(base::Bind( | 84 job->SetRetryCallback(base::Bind( |
84 &DeviceManagementServiceTestBase::OnJobRetry, base::Unretained(this))); | 85 &DeviceManagementServiceTestBase::OnJobRetry, base::Unretained(this))); |
85 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, | 86 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, |
86 base::Unretained(this))); | 87 base::Unretained(this))); |
87 return job; | 88 return job; |
88 } | 89 } |
89 | 90 |
| 91 DeviceManagementRequestJob* StartApiAuthCodeFetchJob() { |
| 92 DeviceManagementRequestJob* job = service_->CreateJob( |
| 93 DeviceManagementRequestJob::TYPE_API_AUTH_CODE_FETCH); |
| 94 job->SetGaiaToken(kGaiaAuthToken); |
| 95 job->SetOAuthToken(kOAuthToken); |
| 96 job->SetClientID(kClientID); |
| 97 job->GetRequest()->mutable_service_api_access_request(); |
| 98 job->SetRetryCallback(base::Bind( |
| 99 &DeviceManagementServiceTestBase::OnJobRetry, base::Unretained(this))); |
| 100 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, |
| 101 base::Unretained(this))); |
| 102 return job; |
| 103 } |
| 104 |
90 DeviceManagementRequestJob* StartUnregistrationJob() { | 105 DeviceManagementRequestJob* StartUnregistrationJob() { |
91 DeviceManagementRequestJob* job = | 106 DeviceManagementRequestJob* job = |
92 service_->CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION); | 107 service_->CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION); |
93 job->SetDMToken(kDMToken); | 108 job->SetDMToken(kDMToken); |
94 job->SetClientID(kClientID); | 109 job->SetClientID(kClientID); |
95 job->GetRequest()->mutable_unregister_request(); | 110 job->GetRequest()->mutable_unregister_request(); |
96 job->SetRetryCallback(base::Bind( | 111 job->SetRetryCallback(base::Bind( |
97 &DeviceManagementServiceTestBase::OnJobRetry, base::Unretained(this))); | 112 &DeviceManagementServiceTestBase::OnJobRetry, base::Unretained(this))); |
98 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, | 113 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, |
99 base::Unretained(this))); | 114 base::Unretained(this))); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); | 204 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); |
190 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); | 205 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
191 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 206 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
192 net::TestURLFetcher* fetcher = GetFetcher(); | 207 net::TestURLFetcher* fetcher = GetFetcher(); |
193 ASSERT_TRUE(fetcher); | 208 ASSERT_TRUE(fetcher); |
194 | 209 |
195 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, | 210 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, |
196 GetParam().response_); | 211 GetParam().response_); |
197 } | 212 } |
198 | 213 |
| 214 TEST_P(DeviceManagementServiceFailedRequestTest, ApiAuthCodeFetchRequest) { |
| 215 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); |
| 216 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
| 217 scoped_ptr<DeviceManagementRequestJob> request_job( |
| 218 StartApiAuthCodeFetchJob()); |
| 219 net::TestURLFetcher* fetcher = GetFetcher(); |
| 220 ASSERT_TRUE(fetcher); |
| 221 |
| 222 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, |
| 223 GetParam().response_); |
| 224 } |
| 225 |
199 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { | 226 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { |
200 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); | 227 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); |
201 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); | 228 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
202 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); | 229 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); |
203 net::TestURLFetcher* fetcher = GetFetcher(); | 230 net::TestURLFetcher* fetcher = GetFetcher(); |
204 ASSERT_TRUE(fetcher); | 231 ASSERT_TRUE(fetcher); |
205 | 232 |
206 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, | 233 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, |
207 GetParam().response_); | 234 GetParam().response_); |
208 } | 235 } |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); | 410 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); |
384 EXPECT_EQ(expected_data, fetcher->upload_data()); | 411 EXPECT_EQ(expected_data, fetcher->upload_data()); |
385 | 412 |
386 // Generate the response. | 413 // Generate the response. |
387 std::string response_data; | 414 std::string response_data; |
388 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); | 415 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); |
389 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 416 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
390 SendResponse(fetcher, status, 200, response_data); | 417 SendResponse(fetcher, status, 200, response_data); |
391 } | 418 } |
392 | 419 |
| 420 TEST_F(DeviceManagementServiceTest, ApiAuthCodeFetchRequest) { |
| 421 em::DeviceManagementResponse expected_response; |
| 422 expected_response.mutable_service_api_access_response()->set_auth_code( |
| 423 kRobotAuthCode); |
| 424 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, |
| 425 MessageEquals(expected_response))); |
| 426 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
| 427 scoped_ptr<DeviceManagementRequestJob> request_job( |
| 428 StartApiAuthCodeFetchJob()); |
| 429 net::TestURLFetcher* fetcher = GetFetcher(); |
| 430 ASSERT_TRUE(fetcher); |
| 431 |
| 432 CheckURLAndQueryParams(fetcher->GetOriginalURL(), |
| 433 dm_protocol::kValueRequestApiAuthorization, |
| 434 kClientID); |
| 435 |
| 436 std::string expected_data; |
| 437 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); |
| 438 EXPECT_EQ(expected_data, fetcher->upload_data()); |
| 439 |
| 440 // Generate the response. |
| 441 std::string response_data; |
| 442 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); |
| 443 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
| 444 SendResponse(fetcher, status, 200, response_data); |
| 445 } |
| 446 |
393 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { | 447 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { |
394 em::DeviceManagementResponse expected_response; | 448 em::DeviceManagementResponse expected_response; |
395 expected_response.mutable_unregister_response(); | 449 expected_response.mutable_unregister_response(); |
396 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, | 450 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, |
397 MessageEquals(expected_response))); | 451 MessageEquals(expected_response))); |
398 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); | 452 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
399 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); | 453 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); |
400 net::TestURLFetcher* fetcher = GetFetcher(); | 454 net::TestURLFetcher* fetcher = GetFetcher(); |
401 ASSERT_TRUE(fetcher); | 455 ASSERT_TRUE(fetcher); |
402 | 456 |
(...skipping 24 matching lines...) Expand all Loading... |
427 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 481 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
428 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); | 482 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
429 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 483 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
430 net::TestURLFetcher* fetcher = GetFetcher(); | 484 net::TestURLFetcher* fetcher = GetFetcher(); |
431 ASSERT_TRUE(fetcher); | 485 ASSERT_TRUE(fetcher); |
432 | 486 |
433 // There shouldn't be any callbacks. | 487 // There shouldn't be any callbacks. |
434 request_job.reset(); | 488 request_job.reset(); |
435 } | 489 } |
436 | 490 |
| 491 TEST_F(DeviceManagementServiceTest, CancelApiAuthCodeFetch) { |
| 492 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
| 493 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
| 494 scoped_ptr<DeviceManagementRequestJob> request_job( |
| 495 StartApiAuthCodeFetchJob()); |
| 496 net::TestURLFetcher* fetcher = GetFetcher(); |
| 497 ASSERT_TRUE(fetcher); |
| 498 |
| 499 // There shouldn't be any callbacks. |
| 500 request_job.reset(); |
| 501 } |
| 502 |
437 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) { | 503 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) { |
438 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 504 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
439 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); | 505 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
440 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); | 506 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); |
441 net::TestURLFetcher* fetcher = GetFetcher(); | 507 net::TestURLFetcher* fetcher = GetFetcher(); |
442 ASSERT_TRUE(fetcher); | 508 ASSERT_TRUE(fetcher); |
443 | 509 |
444 // There shouldn't be any callbacks. | 510 // There shouldn't be any callbacks. |
445 request_job.reset(); | 511 request_job.reset(); |
446 } | 512 } |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 EXPECT_CALL(*this, OnJobDone(DM_STATUS_REQUEST_FAILED, _)); | 691 EXPECT_CALL(*this, OnJobDone(DM_STATUS_REQUEST_FAILED, _)); |
626 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); | 692 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); |
627 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, | 693 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
628 net::ERR_NETWORK_CHANGED)); | 694 net::ERR_NETWORK_CHANGED)); |
629 fetcher->set_url(GURL(kServiceUrl)); | 695 fetcher->set_url(GURL(kServiceUrl)); |
630 fetcher->delegate()->OnURLFetchComplete(fetcher); | 696 fetcher->delegate()->OnURLFetchComplete(fetcher); |
631 Mock::VerifyAndClearExpectations(this); | 697 Mock::VerifyAndClearExpectations(this); |
632 } | 698 } |
633 | 699 |
634 } // namespace policy | 700 } // namespace policy |
OLD | NEW |