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

Side by Side Diff: chrome/browser/policy/test/policy_testserver.py

Issue 1892873002: Add CheckAndroidManagement to ARC sign-in flow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@check_android_management
Patch Set: Added browser test for ArcAuthService. Created 4 years, 8 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
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 """A bare-bones test server for testing cloud policy support. 5 """A bare-bones test server for testing cloud policy support.
6 6
7 This implements a simple cloud policy test server that can be used to test 7 This implements a simple cloud policy test server that can be used to test
8 chrome's device management service client. The policy information is read from 8 chrome's device management service client. The policy information is read from
9 the file named device_management in the server's data directory. It contains 9 the file named device_management in the server's data directory. It contains
10 enforced and recommended policies for the device and user scope, and a list 10 enforced and recommended policies for the device and user scope, and a list
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 Parses the data supplied at construction time and returns a pair indicating 272 Parses the data supplied at construction time and returns a pair indicating
273 http status code and response data to be sent back to the client. 273 http status code and response data to be sent back to the client.
274 274
275 Returns: 275 Returns:
276 A tuple of HTTP status code and response data to send to the client. 276 A tuple of HTTP status code and response data to send to the client.
277 """ 277 """
278 rmsg = dm.DeviceManagementRequest() 278 rmsg = dm.DeviceManagementRequest()
279 length = int(self.headers.getheader('content-length')) 279 length = int(self.headers.getheader('content-length'))
280 rmsg.ParseFromString(self.rfile.read(length)) 280 rmsg.ParseFromString(self.rfile.read(length))
281 281
282 logging.debug('gaia auth token -> ' + 282 gaia_header = self.headers.getheader('Authorization', '')
283 self.headers.getheader('Authorization', '')) 283
284 logging.debug('gaia auth token -> ' + gaia_header)
284 logging.debug('oauth token -> ' + str(self.GetUniqueParam('oauth_token'))) 285 logging.debug('oauth token -> ' + str(self.GetUniqueParam('oauth_token')))
285 logging.debug('deviceid -> ' + str(self.GetUniqueParam('deviceid'))) 286 logging.debug('deviceid -> ' + str(self.GetUniqueParam('deviceid')))
286 self.DumpMessage('Request', rmsg) 287 self.DumpMessage('Request', rmsg)
287 288
288 request_type = self.GetUniqueParam('request') 289 request_type = self.GetUniqueParam('request')
289 # Check server side requirements, as defined in 290 # Check server side requirements, as defined in
290 # device_management_backend.proto. 291 # device_management_backend.proto.
291 if (self.GetUniqueParam('devicetype') != '2' or 292 if (self.GetUniqueParam('devicetype') != '2' or
292 self.GetUniqueParam('apptype') != 'Chrome' or 293 self.GetUniqueParam('apptype') != 'Chrome' or
293 len(self.GetUniqueParam('deviceid')) >= 64): 294 (self.GetUniqueParam('deviceid') is not None and
295 len(self.GetUniqueParam('deviceid')) >= 64)):
294 return (400, 'Invalid request parameter') 296 return (400, 'Invalid request parameter')
295 if request_type == 'register': 297 if request_type == 'register':
296 response = self.ProcessRegister(rmsg.register_request) 298 response = self.ProcessRegister(rmsg.register_request)
297 elif request_type == 'api_authorization': 299 elif request_type == 'api_authorization':
298 response = self.ProcessApiAuthorization(rmsg.service_api_access_request) 300 response = self.ProcessApiAuthorization(rmsg.service_api_access_request)
299 elif request_type == 'unregister': 301 elif request_type == 'unregister':
300 response = self.ProcessUnregister(rmsg.unregister_request) 302 response = self.ProcessUnregister(rmsg.unregister_request)
301 elif request_type == 'policy': 303 elif request_type == 'policy':
302 response = self.ProcessPolicy(rmsg, request_type) 304 response = self.ProcessPolicy(rmsg, request_type)
303 elif request_type == 'enterprise_check': 305 elif request_type == 'enterprise_check':
304 response = self.ProcessAutoEnrollment(rmsg.auto_enrollment_request) 306 response = self.ProcessAutoEnrollment(rmsg.auto_enrollment_request)
305 elif request_type == 'device_state_retrieval': 307 elif request_type == 'device_state_retrieval':
306 response = self.ProcessDeviceStateRetrievalRequest( 308 response = self.ProcessDeviceStateRetrievalRequest(
307 rmsg.device_state_retrieval_request) 309 rmsg.device_state_retrieval_request)
308 elif request_type == 'status_upload': 310 elif request_type == 'status_upload':
309 response = self.ProcessStatusUploadRequest( 311 response = self.ProcessStatusUploadRequest(
310 rmsg.device_status_report_request, rmsg.session_status_report_request) 312 rmsg.device_status_report_request, rmsg.session_status_report_request)
313 elif request_type == 'check_android_management_request':
314 gaia_token = gaia_header[len('GoogleLogin auth='):]
315 response = self.ProcessCheckAndroidManagementRequest(
316 rmsg.check_android_management_request,
317 gaia_token)
311 else: 318 else:
312 return (400, 'Invalid request parameter') 319 return (400, 'Invalid request parameter')
313 320
314 if isinstance(response[1], basestring): 321 if isinstance(response[1], basestring):
315 body = response[1] 322 body = response[1]
316 elif isinstance(response[1], google.protobuf.message.Message): 323 elif isinstance(response[1], google.protobuf.message.Message):
317 self.DumpMessage('Response', response[1]) 324 self.DumpMessage('Response', response[1])
318 body = response[1].SerializeToString() 325 body = response[1].SerializeToString()
319 else: 326 else:
320 body = '' 327 body = ''
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 session_status_report_response = dm.SessionStatusReportResponse() 586 session_status_report_response = dm.SessionStatusReportResponse()
580 587
581 response = dm.DeviceManagementResponse() 588 response = dm.DeviceManagementResponse()
582 response.device_status_report_response.CopyFrom( 589 response.device_status_report_response.CopyFrom(
583 device_status_report_response) 590 device_status_report_response)
584 response.session_status_report_response.CopyFrom( 591 response.session_status_report_response.CopyFrom(
585 session_status_report_response) 592 session_status_report_response)
586 593
587 return (200, response) 594 return (200, response)
588 595
596 def ProcessCheckAndroidManagementRequest(self, msg, gaia_token):
597 """Handles a check android management request.
598
599 Returns:
600 A tuple of HTTP status code and response data to send to the client.
601 """
602 check_android_management_response = dm.CheckAndroidManagementResponse()
603
604 response = dm.DeviceManagementResponse()
605 response.check_android_management_response.CopyFrom(
606 check_android_management_response)
607 if gaia_token == 'managed-auth-token':
608 return (409, response)
609 elif gaia_token == 'unmanaged-auth-token':
610 return (200, response)
611 else:
612 return (400, response)
613
589 def SetProtobufMessageField(self, group_message, field, field_value): 614 def SetProtobufMessageField(self, group_message, field, field_value):
590 """Sets a field in a protobuf message. 615 """Sets a field in a protobuf message.
591 616
592 Args: 617 Args:
593 group_message: The protobuf message. 618 group_message: The protobuf message.
594 field: The field of the message to set, it should be a member of 619 field: The field of the message to set, it should be a member of
595 group_message.DESCRIPTOR.fields. 620 group_message.DESCRIPTOR.fields.
596 field_value: The value to set. 621 field_value: The value to set.
597 """ 622 """
598 if field.label == field.LABEL_REPEATED: 623 if field.label == field.LABEL_REPEATED:
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 if (self.options.log_to_console): 1340 if (self.options.log_to_console):
1316 logger.addHandler(logging.StreamHandler()) 1341 logger.addHandler(logging.StreamHandler())
1317 if (self.options.log_file): 1342 if (self.options.log_file):
1318 logger.addHandler(logging.FileHandler(self.options.log_file)) 1343 logger.addHandler(logging.FileHandler(self.options.log_file))
1319 1344
1320 testserver_base.TestServerRunner.run_server(self) 1345 testserver_base.TestServerRunner.run_server(self)
1321 1346
1322 1347
1323 if __name__ == '__main__': 1348 if __name__ == '__main__':
1324 sys.exit(PolicyServerRunner().main()) 1349 sys.exit(PolicyServerRunner().main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698