Index: sync/tools/testserver/sync_testserver.py |
diff --git a/sync/tools/testserver/sync_testserver.py b/sync/tools/testserver/sync_testserver.py |
index 53532cb5b7d57a6534958ca3c1b20cbcf9cc738a..7a90a2582cb7fea1ede9905e0998a61b8a92d8d7 100755 |
--- a/sync/tools/testserver/sync_testserver.py |
+++ b/sync/tools/testserver/sync_testserver.py |
@@ -151,10 +151,14 @@ class SyncPageHandler(testserver_base.BasePageHandler): |
self.ChromiumSyncEnableKeystoreEncryptionOpHandler, |
self.ChromiumSyncRotateKeystoreKeysOpHandler, |
self.ChromiumSyncEnableManagedUserAcknowledgementHandler, |
- self.ChromiumSyncEnablePreCommitGetUpdateAvoidanceHandler] |
+ self.ChromiumSyncEnablePreCommitGetUpdateAvoidanceHandler, |
+ self.GaiaOAuth2TokenHandler, |
+ self.GaiaSetOAuth2TokenResponseHandler] |
post_handlers = [self.ChromiumSyncCommandHandler, |
- self.ChromiumSyncTimeHandler] |
+ self.ChromiumSyncTimeHandler, |
+ self.GaiaOAuth2TokenHandler, |
+ self.GaiaSetOAuth2TokenResponseHandler] |
testserver_base.BasePageHandler.__init__(self, request, client_address, |
sync_http_server, [], get_handlers, |
[], post_handlers, []) |
@@ -441,6 +445,60 @@ class SyncPageHandler(testserver_base.BasePageHandler): |
self.wfile.write(raw_reply) |
return True |
+ def GaiaOAuth2TokenHandler(self): |
+ test_name = "/o/oauth2/token" |
+ if not self._ShouldHandleRequest(test_name): |
+ return False |
+ if self.headers.getheader('content-length'): |
+ length = int(self.headers.getheader('content-length')) |
+ _raw_request = self.rfile.read(length) |
+ result, raw_reply = ( |
+ self.server._sync_handler.HandleGetOauth2Token()) |
+ self.send_response(result) |
+ self.send_header('Content-Type', 'application/json') |
+ self.send_header('Content-Length', len(raw_reply)) |
+ self.end_headers() |
+ self.wfile.write(raw_reply) |
+ return True |
+ |
+ def GaiaSetOAuth2TokenResponseHandler(self): |
+ test_name = "/setfakeoauth2token" |
+ if not self._ShouldHandleRequest(test_name): |
+ return False |
+ |
+ # The index of 'query' is 4. |
+ # See http://docs.python.org/2/library/urlparse.html |
+ query = urlparse.urlparse(self.path)[4] |
+ query_params = urlparse.parse_qs(query) |
+ |
+ response_code = 0 |
+ request_token = '' |
+ access_token = '' |
+ expires_in = 0 |
+ token_type = '' |
+ |
+ if 'response_code' in query_params: |
+ response_code = query_params['response_code'][0] |
+ if 'request_token' in query_params: |
+ request_token = query_params['request_token'][0] |
+ if 'access_token' in query_params: |
+ access_token = query_params['access_token'][0] |
+ if 'expires_in' in query_params: |
+ expires_in = query_params['expires_in'][0] |
+ if 'token_type' in query_params: |
+ token_type = query_params['token_type'][0] |
+ |
+ result, raw_reply = ( |
+ self.server._sync_handler.HandleSetOauth2Token( |
+ response_code, request_token, access_token, expires_in, token_type)) |
+ self.send_response(result) |
+ self.send_header('Content-Type', 'text/html') |
+ self.send_header('Content-Length', len(raw_reply)) |
+ self.end_headers() |
+ self.wfile.write(raw_reply) |
+ return True |
+ |
+ |
class SyncServerRunner(testserver_base.TestServerRunner): |
"""TestServerRunner for the net test servers.""" |
@@ -452,8 +510,12 @@ class SyncServerRunner(testserver_base.TestServerRunner): |
host = self.options.host |
xmpp_port = self.options.xmpp_port |
server = SyncHTTPServer((host, port), xmpp_port, SyncPageHandler) |
- print 'Sync HTTP server started on port %d...' % server.server_port |
- print 'Sync XMPP server started on port %d...' % server.xmpp_port |
+ print ('Sync HTTP server started at %s:%d/chromiumsync...' % |
+ (host, server.server_port)) |
+ print ('Fake OAuth2 Token server started at %s:%d/o/oauth2/token...' % |
+ (host, server.server_port)) |
+ print ('Sync XMPP server started at %s:%d...' % |
+ (host, server.xmpp_port)) |
server_data['port'] = server.server_port |
server_data['xmpp_port'] = server.xmpp_port |
return server |