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

Side by Side Diff: sync/tools/testserver/sync_testserver.py

Issue 58093002: [sync] Serve fake OAuth2 tokens from python sync server (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address feedback Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « sync/tools/testserver/chromiumsync.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """This is a python sync server used for testing Chrome Sync. 6 """This is a python sync server used for testing Chrome Sync.
7 7
8 By default, it listens on an ephemeral port and xmpp_port and sends the port 8 By default, it listens on an ephemeral port and xmpp_port and sends the port
9 numbers back to the originating process over a pipe. The originating process can 9 numbers back to the originating process over a pipe. The originating process can
10 specify an explicit port and xmpp_port if necessary. 10 specify an explicit port and xmpp_port if necessary.
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 self.ChromiumSyncEnableNotificationsOpHandler, 144 self.ChromiumSyncEnableNotificationsOpHandler,
145 self.ChromiumSyncSendNotificationOpHandler, 145 self.ChromiumSyncSendNotificationOpHandler,
146 self.ChromiumSyncBirthdayErrorOpHandler, 146 self.ChromiumSyncBirthdayErrorOpHandler,
147 self.ChromiumSyncTransientErrorOpHandler, 147 self.ChromiumSyncTransientErrorOpHandler,
148 self.ChromiumSyncErrorOpHandler, 148 self.ChromiumSyncErrorOpHandler,
149 self.ChromiumSyncSyncTabFaviconsOpHandler, 149 self.ChromiumSyncSyncTabFaviconsOpHandler,
150 self.ChromiumSyncCreateSyncedBookmarksOpHandler, 150 self.ChromiumSyncCreateSyncedBookmarksOpHandler,
151 self.ChromiumSyncEnableKeystoreEncryptionOpHandler, 151 self.ChromiumSyncEnableKeystoreEncryptionOpHandler,
152 self.ChromiumSyncRotateKeystoreKeysOpHandler, 152 self.ChromiumSyncRotateKeystoreKeysOpHandler,
153 self.ChromiumSyncEnableManagedUserAcknowledgementHandler, 153 self.ChromiumSyncEnableManagedUserAcknowledgementHandler,
154 self.ChromiumSyncEnablePreCommitGetUpdateAvoidanceHandler] 154 self.ChromiumSyncEnablePreCommitGetUpdateAvoidanceHandler,
155 self.GaiaOAuth2TokenHandler,
156 self.GaiaSetOAuth2TokenResponseHandler]
155 157
156 post_handlers = [self.ChromiumSyncCommandHandler, 158 post_handlers = [self.ChromiumSyncCommandHandler,
157 self.ChromiumSyncTimeHandler] 159 self.ChromiumSyncTimeHandler,
160 self.GaiaOAuth2TokenHandler,
161 self.GaiaSetOAuth2TokenResponseHandler]
158 testserver_base.BasePageHandler.__init__(self, request, client_address, 162 testserver_base.BasePageHandler.__init__(self, request, client_address,
159 sync_http_server, [], get_handlers, 163 sync_http_server, [], get_handlers,
160 [], post_handlers, []) 164 [], post_handlers, [])
161 165
162 166
163 def ChromiumSyncTimeHandler(self): 167 def ChromiumSyncTimeHandler(self):
164 """Handle Chromium sync .../time requests. 168 """Handle Chromium sync .../time requests.
165 169
166 The syncer sometimes checks server reachability by examining /time. 170 The syncer sometimes checks server reachability by examining /time.
167 """ 171 """
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 return False 438 return False
435 result, raw_reply = ( 439 result, raw_reply = (
436 self.server._sync_handler.HandleEnablePreCommitGetUpdateAvoidance()) 440 self.server._sync_handler.HandleEnablePreCommitGetUpdateAvoidance())
437 self.send_response(result) 441 self.send_response(result)
438 self.send_header('Content-Type', 'text/html') 442 self.send_header('Content-Type', 'text/html')
439 self.send_header('Content-Length', len(raw_reply)) 443 self.send_header('Content-Length', len(raw_reply))
440 self.end_headers() 444 self.end_headers()
441 self.wfile.write(raw_reply) 445 self.wfile.write(raw_reply)
442 return True 446 return True
443 447
448 def GaiaOAuth2TokenHandler(self):
449 test_name = "/o/oauth2/token"
450 if not self._ShouldHandleRequest(test_name):
451 return False
452 if self.headers.getheader('content-length'):
453 length = int(self.headers.getheader('content-length'))
454 _raw_request = self.rfile.read(length)
455 result, raw_reply = (
456 self.server._sync_handler.HandleGetOauth2Token())
457 self.send_response(result)
458 self.send_header('Content-Type', 'application/json')
459 self.send_header('Content-Length', len(raw_reply))
460 self.end_headers()
461 self.wfile.write(raw_reply)
462 return True
463
464 def GaiaSetOAuth2TokenResponseHandler(self):
465 test_name = "/setfakeoauth2token"
466 if not self._ShouldHandleRequest(test_name):
467 return False
468
469 # The index of 'query' is 4.
470 # See http://docs.python.org/2/library/urlparse.html
471 query = urlparse.urlparse(self.path)[4]
472 query_params = urlparse.parse_qs(query)
473
474 response_code = 0
475 request_token = ''
476 access_token = ''
477 expires_in = 0
478 token_type = ''
479
480 if 'response_code' in query_params:
481 response_code = query_params['response_code'][0]
482 if 'request_token' in query_params:
483 request_token = query_params['request_token'][0]
484 if 'access_token' in query_params:
485 access_token = query_params['access_token'][0]
486 if 'expires_in' in query_params:
487 expires_in = query_params['expires_in'][0]
488 if 'token_type' in query_params:
489 token_type = query_params['token_type'][0]
490
491 result, raw_reply = (
492 self.server._sync_handler.HandleSetOauth2Token(
493 response_code, request_token, access_token, expires_in, token_type))
494 self.send_response(result)
495 self.send_header('Content-Type', 'text/html')
496 self.send_header('Content-Length', len(raw_reply))
497 self.end_headers()
498 self.wfile.write(raw_reply)
499 return True
500
501
444 class SyncServerRunner(testserver_base.TestServerRunner): 502 class SyncServerRunner(testserver_base.TestServerRunner):
445 """TestServerRunner for the net test servers.""" 503 """TestServerRunner for the net test servers."""
446 504
447 def __init__(self): 505 def __init__(self):
448 super(SyncServerRunner, self).__init__() 506 super(SyncServerRunner, self).__init__()
449 507
450 def create_server(self, server_data): 508 def create_server(self, server_data):
451 port = self.options.port 509 port = self.options.port
452 host = self.options.host 510 host = self.options.host
453 xmpp_port = self.options.xmpp_port 511 xmpp_port = self.options.xmpp_port
454 server = SyncHTTPServer((host, port), xmpp_port, SyncPageHandler) 512 server = SyncHTTPServer((host, port), xmpp_port, SyncPageHandler)
455 print 'Sync HTTP server started on port %d...' % server.server_port 513 print ('Sync HTTP server started at %s:%d/chromiumsync...' %
456 print 'Sync XMPP server started on port %d...' % server.xmpp_port 514 (host, server.server_port))
515 print ('Fake OAuth2 Token server started at %s:%d/o/oauth2/token...' %
516 (host, server.server_port))
517 print ('Sync XMPP server started at %s:%d...' %
518 (host, server.xmpp_port))
457 server_data['port'] = server.server_port 519 server_data['port'] = server.server_port
458 server_data['xmpp_port'] = server.xmpp_port 520 server_data['xmpp_port'] = server.xmpp_port
459 return server 521 return server
460 522
461 def run_server(self): 523 def run_server(self):
462 testserver_base.TestServerRunner.run_server(self) 524 testserver_base.TestServerRunner.run_server(self)
463 525
464 def add_options(self): 526 def add_options(self):
465 testserver_base.TestServerRunner.add_options(self) 527 testserver_base.TestServerRunner.add_options(self)
466 self.option_parser.add_option('--xmpp-port', default='0', type='int', 528 self.option_parser.add_option('--xmpp-port', default='0', type='int',
467 help='Port used by the XMPP server. If ' 529 help='Port used by the XMPP server. If '
468 'unspecified, the XMPP server will listen on ' 530 'unspecified, the XMPP server will listen on '
469 'an ephemeral port.') 531 'an ephemeral port.')
470 # Override the default logfile name used in testserver.py. 532 # Override the default logfile name used in testserver.py.
471 self.option_parser.set_defaults(log_file='sync_testserver.log') 533 self.option_parser.set_defaults(log_file='sync_testserver.log')
472 534
473 if __name__ == '__main__': 535 if __name__ == '__main__':
474 sys.exit(SyncServerRunner().main()) 536 sys.exit(SyncServerRunner().main())
OLDNEW
« no previous file with comments | « sync/tools/testserver/chromiumsync.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698