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 |