| 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 "chrome/browser/policy/cloud/cloud_policy_client.h" | 5 #include "chrome/browser/policy/cloud/cloud_policy_client.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 namespace policy { | 27 namespace policy { |
| 28 | 28 |
| 29 namespace { | 29 namespace { |
| 30 | 30 |
| 31 const char kClientID[] = "fake-client-id"; | 31 const char kClientID[] = "fake-client-id"; |
| 32 const char kMachineID[] = "fake-machine-id"; | 32 const char kMachineID[] = "fake-machine-id"; |
| 33 const char kMachineModel[] = "fake-machine-model"; | 33 const char kMachineModel[] = "fake-machine-model"; |
| 34 const char kOAuthToken[] = "fake-oauth-token"; | 34 const char kOAuthToken[] = "fake-oauth-token"; |
| 35 const char kDMToken[] = "fake-dm-token"; | 35 const char kDMToken[] = "fake-dm-token"; |
| 36 const char kDeviceCertificate[] = "fake-device-certificate"; | 36 const char kDeviceCertificate[] = "fake-device-certificate"; |
| 37 const char kRequisition[] = "fake-requisition"; |
| 37 | 38 |
| 38 class MockStatusProvider : public CloudPolicyClient::StatusProvider { | 39 class MockStatusProvider : public CloudPolicyClient::StatusProvider { |
| 39 public: | 40 public: |
| 40 MockStatusProvider() {} | 41 MockStatusProvider() {} |
| 41 virtual ~MockStatusProvider() {} | 42 virtual ~MockStatusProvider() {} |
| 42 | 43 |
| 43 MOCK_METHOD1(GetDeviceStatus, bool(em::DeviceStatusReportRequest* status)); | 44 MOCK_METHOD1(GetDeviceStatus, bool(em::DeviceStatusReportRequest* status)); |
| 44 MOCK_METHOD1(GetSessionStatus, bool(em::SessionStatusReportRequest* status)); | 45 MOCK_METHOD1(GetSessionStatus, bool(em::SessionStatusReportRequest* status)); |
| 45 MOCK_METHOD0(OnSubmittedSuccessfully, void(void)); | 46 MOCK_METHOD0(OnSubmittedSuccessfully, void(void)); |
| 46 | 47 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 EXPECT_CALL(status_provider_, OnSubmittedSuccessfully()); | 214 EXPECT_CALL(status_provider_, OnSubmittedSuccessfully()); |
| 214 client_->FetchPolicy(); | 215 client_->FetchPolicy(); |
| 215 EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); | 216 EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); |
| 216 CheckPolicyResponse(); | 217 CheckPolicyResponse(); |
| 217 } | 218 } |
| 218 | 219 |
| 219 TEST_F(CloudPolicyClientTest, RegistrationAndPolicyFetch) { | 220 TEST_F(CloudPolicyClientTest, RegistrationAndPolicyFetch) { |
| 220 ExpectRegistration(kOAuthToken); | 221 ExpectRegistration(kOAuthToken); |
| 221 EXPECT_CALL(observer_, OnRegistrationStateChanged(_)); | 222 EXPECT_CALL(observer_, OnRegistrationStateChanged(_)); |
| 222 client_->Register(em::DeviceRegisterRequest::USER, | 223 client_->Register(em::DeviceRegisterRequest::USER, |
| 223 kOAuthToken, std::string(), false); | 224 kOAuthToken, std::string(), false, std::string()); |
| 224 EXPECT_TRUE(client_->is_registered()); | 225 EXPECT_TRUE(client_->is_registered()); |
| 225 EXPECT_FALSE(client_->GetPolicyFor(policy_ns_key_)); | 226 EXPECT_FALSE(client_->GetPolicyFor(policy_ns_key_)); |
| 226 EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); | 227 EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); |
| 227 | 228 |
| 228 ExpectPolicyFetch(kDMToken, dm_protocol::kValueUserAffiliationNone); | 229 ExpectPolicyFetch(kDMToken, dm_protocol::kValueUserAffiliationNone); |
| 229 EXPECT_CALL(observer_, OnPolicyFetched(_)); | 230 EXPECT_CALL(observer_, OnPolicyFetched(_)); |
| 230 EXPECT_CALL(status_provider_, OnSubmittedSuccessfully()); | 231 EXPECT_CALL(status_provider_, OnSubmittedSuccessfully()); |
| 231 client_->FetchPolicy(); | 232 client_->FetchPolicy(); |
| 232 EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); | 233 EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); |
| 233 CheckPolicyResponse(); | 234 CheckPolicyResponse(); |
| 234 } | 235 } |
| 235 | 236 |
| 236 TEST_F(CloudPolicyClientTest, RegistrationParameters) { | 237 TEST_F(CloudPolicyClientTest, RegistrationParameters) { |
| 237 registration_request_.mutable_register_request()->set_reregister(true); | 238 registration_request_.mutable_register_request()->set_reregister(true); |
| 238 registration_request_.mutable_register_request()->set_auto_enrolled(true); | 239 registration_request_.mutable_register_request()->set_auto_enrolled(true); |
| 240 registration_request_.mutable_register_request()->set_requisition( |
| 241 kRequisition); |
| 239 ExpectRegistration(kOAuthToken); | 242 ExpectRegistration(kOAuthToken); |
| 240 EXPECT_CALL(observer_, OnRegistrationStateChanged(_)); | 243 EXPECT_CALL(observer_, OnRegistrationStateChanged(_)); |
| 241 client_->Register(em::DeviceRegisterRequest::USER, | 244 client_->Register(em::DeviceRegisterRequest::USER, |
| 242 kOAuthToken, kClientID, true); | 245 kOAuthToken, kClientID, true, kRequisition); |
| 243 EXPECT_EQ(kClientID, client_id_); | 246 EXPECT_EQ(kClientID, client_id_); |
| 244 } | 247 } |
| 245 | 248 |
| 246 TEST_F(CloudPolicyClientTest, RegistrationNoToken) { | 249 TEST_F(CloudPolicyClientTest, RegistrationNoToken) { |
| 247 registration_response_.mutable_register_response()-> | 250 registration_response_.mutable_register_response()-> |
| 248 clear_device_management_token(); | 251 clear_device_management_token(); |
| 249 ExpectRegistration(kOAuthToken); | 252 ExpectRegistration(kOAuthToken); |
| 250 EXPECT_CALL(observer_, OnClientError(_)); | 253 EXPECT_CALL(observer_, OnClientError(_)); |
| 251 client_->Register(em::DeviceRegisterRequest::USER, | 254 client_->Register(em::DeviceRegisterRequest::USER, |
| 252 kOAuthToken, std::string(), false); | 255 kOAuthToken, std::string(), false, std::string()); |
| 253 EXPECT_FALSE(client_->is_registered()); | 256 EXPECT_FALSE(client_->is_registered()); |
| 254 EXPECT_FALSE(client_->GetPolicyFor(policy_ns_key_)); | 257 EXPECT_FALSE(client_->GetPolicyFor(policy_ns_key_)); |
| 255 EXPECT_EQ(DM_STATUS_RESPONSE_DECODING_ERROR, client_->status()); | 258 EXPECT_EQ(DM_STATUS_RESPONSE_DECODING_ERROR, client_->status()); |
| 256 } | 259 } |
| 257 | 260 |
| 258 TEST_F(CloudPolicyClientTest, RegistrationFailure) { | 261 TEST_F(CloudPolicyClientTest, RegistrationFailure) { |
| 259 EXPECT_CALL(service_, | 262 EXPECT_CALL(service_, |
| 260 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) | 263 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) |
| 261 .WillOnce(service_.FailJob(DM_STATUS_REQUEST_FAILED)); | 264 .WillOnce(service_.FailJob(DM_STATUS_REQUEST_FAILED)); |
| 262 EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); | 265 EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); |
| 263 EXPECT_CALL(observer_, OnClientError(_)); | 266 EXPECT_CALL(observer_, OnClientError(_)); |
| 264 client_->Register(em::DeviceRegisterRequest::USER, | 267 client_->Register(em::DeviceRegisterRequest::USER, |
| 265 kOAuthToken, std::string(), false); | 268 kOAuthToken, std::string(), false, std::string()); |
| 266 EXPECT_FALSE(client_->is_registered()); | 269 EXPECT_FALSE(client_->is_registered()); |
| 267 EXPECT_FALSE(client_->GetPolicyFor(policy_ns_key_)); | 270 EXPECT_FALSE(client_->GetPolicyFor(policy_ns_key_)); |
| 268 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status()); | 271 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status()); |
| 269 } | 272 } |
| 270 | 273 |
| 271 TEST_F(CloudPolicyClientTest, RetryRegistration) { | 274 TEST_F(CloudPolicyClientTest, RetryRegistration) { |
| 272 // First registration does not set the re-register flag. | 275 // First registration does not set the re-register flag. |
| 273 EXPECT_FALSE( | 276 EXPECT_FALSE( |
| 274 registration_request_.mutable_register_request()->has_reregister()); | 277 registration_request_.mutable_register_request()->has_reregister()); |
| 275 MockDeviceManagementJob* register_job = NULL; | 278 MockDeviceManagementJob* register_job = NULL; |
| 276 EXPECT_CALL(service_, | 279 EXPECT_CALL(service_, |
| 277 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) | 280 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) |
| 278 .WillOnce(service_.CreateAsyncJob(®ister_job)); | 281 .WillOnce(service_.CreateAsyncJob(®ister_job)); |
| 279 EXPECT_CALL(service_, StartJob(dm_protocol::kValueRequestRegister, | 282 EXPECT_CALL(service_, StartJob(dm_protocol::kValueRequestRegister, |
| 280 "", kOAuthToken, "", "", _, | 283 "", kOAuthToken, "", "", _, |
| 281 MatchProto(registration_request_))); | 284 MatchProto(registration_request_))); |
| 282 client_->Register(em::DeviceRegisterRequest::USER, | 285 client_->Register(em::DeviceRegisterRequest::USER, |
| 283 kOAuthToken, std::string(), false); | 286 kOAuthToken, std::string(), false, std::string()); |
| 284 EXPECT_FALSE(client_->is_registered()); | 287 EXPECT_FALSE(client_->is_registered()); |
| 285 Mock::VerifyAndClearExpectations(&service_); | 288 Mock::VerifyAndClearExpectations(&service_); |
| 286 | 289 |
| 287 // Simulate a retry callback before proceeding; the re-register flag is set. | 290 // Simulate a retry callback before proceeding; the re-register flag is set. |
| 288 registration_request_.mutable_register_request()->set_reregister(true); | 291 registration_request_.mutable_register_request()->set_reregister(true); |
| 289 EXPECT_CALL(service_, StartJob(dm_protocol::kValueRequestRegister, | 292 EXPECT_CALL(service_, StartJob(dm_protocol::kValueRequestRegister, |
| 290 "", kOAuthToken, "", "", _, | 293 "", kOAuthToken, "", "", _, |
| 291 MatchProto(registration_request_))); | 294 MatchProto(registration_request_))); |
| 292 register_job->RetryJob(); | 295 register_job->RetryJob(); |
| 293 Mock::VerifyAndClearExpectations(&service_); | 296 Mock::VerifyAndClearExpectations(&service_); |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); | 525 EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); |
| 523 EXPECT_CALL(observer_, OnClientError(_)); | 526 EXPECT_CALL(observer_, OnClientError(_)); |
| 524 CloudPolicyClient::StatusCallback callback = base::Bind( | 527 CloudPolicyClient::StatusCallback callback = base::Bind( |
| 525 &MockUploadCertificateObserver::OnUploadComplete, | 528 &MockUploadCertificateObserver::OnUploadComplete, |
| 526 base::Unretained(&upload_certificate_observer_)); | 529 base::Unretained(&upload_certificate_observer_)); |
| 527 client_->UploadCertificate(kDeviceCertificate, callback); | 530 client_->UploadCertificate(kDeviceCertificate, callback); |
| 528 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status()); | 531 EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status()); |
| 529 } | 532 } |
| 530 | 533 |
| 531 } // namespace policy | 534 } // namespace policy |
| OLD | NEW |