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

Side by Side Diff: net/tools/testserver/testserver.py

Issue 5814005: Minimize login prompts (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Add browsertest Created 10 years 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
OLDNEW
1 #!/usr/bin/python2.4 1 #!/usr/bin/python2.4
2 # Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2006-2010 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 simple HTTP server used for testing Chrome. 6 """This is a simple HTTP server used for testing Chrome.
7 7
8 It supports several test URLs, as specified by the handlers in TestPageHandler. 8 It supports several test URLs, as specified by the handlers in TestPageHandler.
9 By default, it listens on an ephemeral port and sends the port number back to 9 By default, it listens on an ephemeral port and sends the port number back to
10 the originating process over a pipe. The originating process can specify an 10 the originating process over a pipe. The originating process can specify an
(...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 905
906 def AuthBasicHandler(self): 906 def AuthBasicHandler(self):
907 """This handler tests 'Basic' authentication. It just sends a page with 907 """This handler tests 'Basic' authentication. It just sends a page with
908 title 'user/pass' if you succeed.""" 908 title 'user/pass' if you succeed."""
909 909
910 if not self._ShouldHandleRequest("/auth-basic"): 910 if not self._ShouldHandleRequest("/auth-basic"):
911 return False 911 return False
912 912
913 username = userpass = password = b64str = "" 913 username = userpass = password = b64str = ""
914 914
915 set_cookie_if_challenged = self.path.find('?set-cookie-if-challenged') > 0 915 set_cookie_if_challenged = self.path.find('?set-cookie-if-challenged') > 0
cbentzel 2010/12/17 19:22:56 Could you shift this to urlparse and cgi.parse_qs
916 916
917 pw_list = re.findall(r'[&?]password=([^&]+)', self.path) + ['secret']
918 realm_list = re.findall(r'[&?]realm=([^&]+)', self.path) + ['testrealm']
919 expected_password = pw_list[0]
920 realm = realm_list[0]
921
917 auth = self.headers.getheader('authorization') 922 auth = self.headers.getheader('authorization')
918 try: 923 try:
919 if not auth: 924 if not auth:
920 raise Exception('no auth') 925 raise Exception('no auth')
921 b64str = re.findall(r'Basic (\S+)', auth)[0] 926 b64str = re.findall(r'Basic (\S+)', auth)[0]
922 userpass = base64.b64decode(b64str) 927 userpass = base64.b64decode(b64str)
923 username, password = re.findall(r'([^:]+):(\S+)', userpass)[0] 928 username, password = re.findall(r'([^:]+):(\S+)', userpass)[0]
924 if password != 'secret': 929 if password != expected_password:
925 raise Exception('wrong password') 930 raise Exception('wrong password')
926 except Exception, e: 931 except Exception, e:
927 # Authentication failed. 932 # Authentication failed.
928 self.send_response(401) 933 self.send_response(401)
929 self.send_header('WWW-Authenticate', 'Basic realm="testrealm"') 934 self.send_header('WWW-Authenticate', 'Basic realm="%s"' % realm)
930 self.send_header('Content-type', 'text/html') 935 self.send_header('Content-type', 'text/html')
931 if set_cookie_if_challenged: 936 if set_cookie_if_challenged:
932 self.send_header('Set-Cookie', 'got_challenged=true') 937 self.send_header('Set-Cookie', 'got_challenged=true')
933 self.end_headers() 938 self.end_headers()
934 self.wfile.write('<html><head>') 939 self.wfile.write('<html><head>')
935 self.wfile.write('<title>Denied: %s</title>' % e) 940 self.wfile.write('<title>Denied: %s</title>' % e)
936 self.wfile.write('</head><body>') 941 self.wfile.write('</head><body>')
937 self.wfile.write('auth=%s<p>' % auth) 942 self.wfile.write('auth=%s<p>' % auth)
938 self.wfile.write('b64str=%s<p>' % b64str) 943 self.wfile.write('b64str=%s<p>' % b64str)
939 self.wfile.write('username: %s<p>' % username) 944 self.wfile.write('username: %s<p>' % username)
940 self.wfile.write('userpass: %s<p>' % userpass) 945 self.wfile.write('userpass: %s<p>' % userpass)
941 self.wfile.write('password: %s<p>' % password) 946 self.wfile.write('password: %s<p>' % password)
942 self.wfile.write('You sent:<br>%s<p>' % self.headers) 947 self.wfile.write('You sent:<br>%s<p>' % self.headers)
943 self.wfile.write('</body></html>') 948 self.wfile.write('</body></html>')
944 return True 949 return True
945 950
946 # Authentication successful. (Return a cachable response to allow for 951 # Authentication successful. (Return a cachable response to allow for
947 # testing cached pages that require authentication.) 952 # testing cached pages that require authentication.)
948 if_none_match = self.headers.getheader('if-none-match') 953 if_none_match = self.headers.getheader('if-none-match')
949 if if_none_match == "abc": 954 if if_none_match == "abc":
950 self.send_response(304) 955 self.send_response(304)
951 self.end_headers() 956 self.end_headers()
952 else: 957 else:
953 self.send_response(200) 958 self.send_response(200)
954 self.send_header('Content-type', 'text/html') 959 self.send_header('Content-type', 'text/html')
cbentzel 2010/12/17 19:22:56 It seems a bit weird to return text/html when your
955 self.send_header('Cache-control', 'max-age=60000') 960 self.send_header('Cache-control', 'max-age=60000')
956 self.send_header('Etag', 'abc') 961 self.send_header('Etag', 'abc')
957 self.end_headers() 962 self.end_headers()
958 self.wfile.write('<html><head>') 963 self.wfile.write('<html><head>')
959 self.wfile.write('<title>%s/%s</title>' % (username, password)) 964 self.wfile.write('<title>%s/%s</title>' % (username, password))
960 self.wfile.write('</head><body>') 965 self.wfile.write('</head><body>')
961 self.wfile.write('auth=%s<p>' % auth) 966 self.wfile.write('auth=%s<p>' % auth)
962 self.wfile.write('You sent:<br>%s<p>' % self.headers) 967 self.wfile.write('You sent:<br>%s<p>' % self.headers)
963 self.wfile.write('</body></html>') 968 self.wfile.write('</body></html>')
964 969
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 'option may appear multiple times, indicating ' 1473 'option may appear multiple times, indicating '
1469 'multiple algorithms should be enabled.'); 1474 'multiple algorithms should be enabled.');
1470 option_parser.add_option('', '--file-root-url', default='/files/', 1475 option_parser.add_option('', '--file-root-url', default='/files/',
1471 help='Specify a root URL for files served.') 1476 help='Specify a root URL for files served.')
1472 option_parser.add_option('', '--startup-pipe', type='int', 1477 option_parser.add_option('', '--startup-pipe', type='int',
1473 dest='startup_pipe', 1478 dest='startup_pipe',
1474 help='File handle of pipe to parent process') 1479 help='File handle of pipe to parent process')
1475 options, args = option_parser.parse_args() 1480 options, args = option_parser.parse_args()
1476 1481
1477 sys.exit(main(options, args)) 1482 sys.exit(main(options, args))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698