| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" | 10 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 // DeviceManagementResponse to |response_data|. | 35 // DeviceManagementResponse to |response_data|. |
| 36 void ConstructResponse(const char* request_data, | 36 void ConstructResponse(const char* request_data, |
| 37 uint64 request_data_length, | 37 uint64 request_data_length, |
| 38 std::string* response_data) { | 38 std::string* response_data) { |
| 39 em::DeviceManagementRequest request; | 39 em::DeviceManagementRequest request; |
| 40 ASSERT_TRUE(request.ParseFromArray(request_data, request_data_length)); | 40 ASSERT_TRUE(request.ParseFromArray(request_data, request_data_length)); |
| 41 em::DeviceManagementResponse response; | 41 em::DeviceManagementResponse response; |
| 42 if (request.has_register_request()) { | 42 if (request.has_register_request()) { |
| 43 response.mutable_register_response()->set_device_management_token( | 43 response.mutable_register_response()->set_device_management_token( |
| 44 "fake_token"); | 44 "fake_token"); |
| 45 } else if (request.has_service_api_access_request()) { |
| 46 response.mutable_service_api_access_response()->set_auth_code( |
| 47 "fake_auth_code"); |
| 45 } else if (request.has_unregister_request()) { | 48 } else if (request.has_unregister_request()) { |
| 46 response.mutable_unregister_response(); | 49 response.mutable_unregister_response(); |
| 47 } else if (request.has_policy_request()) { | 50 } else if (request.has_policy_request()) { |
| 48 response.mutable_policy_response()->add_response(); | 51 response.mutable_policy_response()->add_response(); |
| 49 } else if (request.has_auto_enrollment_request()) { | 52 } else if (request.has_auto_enrollment_request()) { |
| 50 response.mutable_auto_enrollment_response(); | 53 response.mutable_auto_enrollment_response(); |
| 51 } else { | 54 } else { |
| 52 FAIL() << "Failed to parse request."; | 55 FAIL() << "Failed to parse request."; |
| 53 } | 56 } |
| 54 ASSERT_TRUE(response.SerializeToString(response_data)); | 57 ASSERT_TRUE(response.SerializeToString(response_data)); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 std::string InitCannedResponse() { | 95 std::string InitCannedResponse() { |
| 93 interceptor_.reset(new TestRequestInterceptor("localhost")); | 96 interceptor_.reset(new TestRequestInterceptor("localhost")); |
| 94 return "http://localhost"; | 97 return "http://localhost"; |
| 95 } | 98 } |
| 96 | 99 |
| 97 std::string InitTestServer() { | 100 std::string InitTestServer() { |
| 98 StartTestServer(); | 101 StartTestServer(); |
| 99 return test_server_->GetServiceURL().spec(); | 102 return test_server_->GetServiceURL().spec(); |
| 100 } | 103 } |
| 101 | 104 |
| 105 void RecordAuthCode(DeviceManagementStatus status, |
| 106 const em::DeviceManagementResponse& response) { |
| 107 robot_auth_code_ = response.service_api_access_response().auth_code(); |
| 108 } |
| 109 |
| 102 protected: | 110 protected: |
| 103 void ExpectRequest() { | 111 void ExpectRequest() { |
| 104 if (interceptor_) | 112 if (interceptor_) |
| 105 interceptor_->PushJobCallback(base::Bind(&ResponseJob)); | 113 interceptor_->PushJobCallback(base::Bind(&ResponseJob)); |
| 106 } | 114 } |
| 107 | 115 |
| 108 void PerformRegistration() { | 116 void PerformRegistration() { |
| 109 ExpectRequest(); | 117 ExpectRequest(); |
| 110 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _)) | 118 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _)) |
| 111 .WillOnce( | 119 .WillOnce( |
| (...skipping 29 matching lines...) Expand all Loading... |
| 141 new LocalPolicyTestServer("device_management_service_browsertest")); | 149 new LocalPolicyTestServer("device_management_service_browsertest")); |
| 142 ASSERT_TRUE(test_server_->Start()); | 150 ASSERT_TRUE(test_server_->Start()); |
| 143 } | 151 } |
| 144 | 152 |
| 145 void RecordToken(DeviceManagementStatus status, | 153 void RecordToken(DeviceManagementStatus status, |
| 146 const em::DeviceManagementResponse& response) { | 154 const em::DeviceManagementResponse& response) { |
| 147 token_ = response.register_response().device_management_token(); | 155 token_ = response.register_response().device_management_token(); |
| 148 } | 156 } |
| 149 | 157 |
| 150 std::string token_; | 158 std::string token_; |
| 159 std::string robot_auth_code_; |
| 151 scoped_ptr<DeviceManagementService> service_; | 160 scoped_ptr<DeviceManagementService> service_; |
| 152 scoped_ptr<LocalPolicyTestServer> test_server_; | 161 scoped_ptr<LocalPolicyTestServer> test_server_; |
| 153 scoped_ptr<TestRequestInterceptor> interceptor_; | 162 scoped_ptr<TestRequestInterceptor> interceptor_; |
| 154 }; | 163 }; |
| 155 | 164 |
| 156 IN_PROC_BROWSER_TEST_P(DeviceManagementServiceIntegrationTest, Registration) { | 165 IN_PROC_BROWSER_TEST_P(DeviceManagementServiceIntegrationTest, Registration) { |
| 157 PerformRegistration(); | 166 PerformRegistration(); |
| 158 EXPECT_FALSE(token_.empty()); | 167 EXPECT_FALSE(token_.empty()); |
| 159 } | 168 } |
| 160 | 169 |
| 170 IN_PROC_BROWSER_TEST_P(DeviceManagementServiceIntegrationTest, |
| 171 ApiAuthCodeFetch) { |
| 172 PerformRegistration(); |
| 173 |
| 174 ExpectRequest(); |
| 175 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _)) |
| 176 .WillOnce( |
| 177 DoAll(Invoke(this, |
| 178 &DeviceManagementServiceIntegrationTest::RecordAuthCode), |
| 179 InvokeWithoutArgs(MessageLoop::current(), |
| 180 &MessageLoop::Quit))); |
| 181 scoped_ptr<DeviceManagementRequestJob> job(service_->CreateJob( |
| 182 DeviceManagementRequestJob::TYPE_API_AUTH_CODE_FETCH)); |
| 183 job->SetDMToken(token_); |
| 184 job->SetClientID("testid"); |
| 185 em::DeviceServiceApiAccessRequest* request = |
| 186 job->GetRequest()->mutable_service_api_access_request(); |
| 187 request->add_auth_scope("authScope4Test"); |
| 188 request->set_oauth2_client_id("oauth2ClientId4Test"); |
| 189 job->Start(base::Bind(&DeviceManagementServiceIntegrationTest::OnJobDone, |
| 190 base::Unretained(this))); |
| 191 MessageLoop::current()->Run(); |
| 192 ASSERT_EQ("fake_auth_code", robot_auth_code_); |
| 193 } |
| 194 |
| 161 IN_PROC_BROWSER_TEST_P(DeviceManagementServiceIntegrationTest, PolicyFetch) { | 195 IN_PROC_BROWSER_TEST_P(DeviceManagementServiceIntegrationTest, PolicyFetch) { |
| 162 PerformRegistration(); | 196 PerformRegistration(); |
| 163 | 197 |
| 164 ExpectRequest(); | 198 ExpectRequest(); |
| 165 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _)) | 199 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _)) |
| 166 .WillOnce(InvokeWithoutArgs(MessageLoop::current(), &MessageLoop::Quit)); | 200 .WillOnce(InvokeWithoutArgs(MessageLoop::current(), &MessageLoop::Quit)); |
| 167 scoped_ptr<DeviceManagementRequestJob> job( | 201 scoped_ptr<DeviceManagementRequestJob> job( |
| 168 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)); | 202 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)); |
| 169 job->SetDMToken(token_); | 203 job->SetDMToken(token_); |
| 170 job->SetUserAffiliation(USER_AFFILIATION_NONE); | 204 job->SetUserAffiliation(USER_AFFILIATION_NONE); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 MessageLoop::current()->Run(); | 241 MessageLoop::current()->Run(); |
| 208 } | 242 } |
| 209 | 243 |
| 210 INSTANTIATE_TEST_CASE_P( | 244 INSTANTIATE_TEST_CASE_P( |
| 211 DeviceManagementServiceIntegrationTestInstance, | 245 DeviceManagementServiceIntegrationTestInstance, |
| 212 DeviceManagementServiceIntegrationTest, | 246 DeviceManagementServiceIntegrationTest, |
| 213 testing::Values(&DeviceManagementServiceIntegrationTest::InitCannedResponse, | 247 testing::Values(&DeviceManagementServiceIntegrationTest::InitCannedResponse, |
| 214 &DeviceManagementServiceIntegrationTest::InitTestServer)); | 248 &DeviceManagementServiceIntegrationTest::InitTestServer)); |
| 215 | 249 |
| 216 } // namespace policy | 250 } // namespace policy |
| OLD | NEW |