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

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 const and fix braces Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/data/login/single_realm.html ('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/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 895 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 return True 906 return True
907 907
908 def AuthBasicHandler(self): 908 def AuthBasicHandler(self):
909 """This handler tests 'Basic' authentication. It just sends a page with 909 """This handler tests 'Basic' authentication. It just sends a page with
910 title 'user/pass' if you succeed.""" 910 title 'user/pass' if you succeed."""
911 911
912 if not self._ShouldHandleRequest("/auth-basic"): 912 if not self._ShouldHandleRequest("/auth-basic"):
913 return False 913 return False
914 914
915 username = userpass = password = b64str = "" 915 username = userpass = password = b64str = ""
916 expected_password = 'secret'
917 realm = 'testrealm'
918 set_cookie_if_challenged = False
916 919
917 set_cookie_if_challenged = self.path.find('?set-cookie-if-challenged') > 0 920 _, _, url_path, _, query, _ = urlparse.urlparse(self.path)
921 query_params = cgi.parse_qs(query, True)
922 if 'set-cookie-if-challenged' in query_params:
923 set_cookie_if_challenged = True
924 if 'password' in query_params:
925 expected_password = query_params['password'][0]
926 if 'realm' in query_params:
927 realm = query_params['realm'][0]
918 928
919 auth = self.headers.getheader('authorization') 929 auth = self.headers.getheader('authorization')
920 try: 930 try:
921 if not auth: 931 if not auth:
922 raise Exception('no auth') 932 raise Exception('no auth')
923 b64str = re.findall(r'Basic (\S+)', auth)[0] 933 b64str = re.findall(r'Basic (\S+)', auth)[0]
924 userpass = base64.b64decode(b64str) 934 userpass = base64.b64decode(b64str)
925 username, password = re.findall(r'([^:]+):(\S+)', userpass)[0] 935 username, password = re.findall(r'([^:]+):(\S+)', userpass)[0]
926 if password != 'secret': 936 if password != expected_password:
927 raise Exception('wrong password') 937 raise Exception('wrong password')
928 except Exception, e: 938 except Exception, e:
929 # Authentication failed. 939 # Authentication failed.
930 self.send_response(401) 940 self.send_response(401)
931 self.send_header('WWW-Authenticate', 'Basic realm="testrealm"') 941 self.send_header('WWW-Authenticate', 'Basic realm="%s"' % realm)
932 self.send_header('Content-type', 'text/html') 942 self.send_header('Content-type', 'text/html')
933 if set_cookie_if_challenged: 943 if set_cookie_if_challenged:
934 self.send_header('Set-Cookie', 'got_challenged=true') 944 self.send_header('Set-Cookie', 'got_challenged=true')
935 self.end_headers() 945 self.end_headers()
936 self.wfile.write('<html><head>') 946 self.wfile.write('<html><head>')
937 self.wfile.write('<title>Denied: %s</title>' % e) 947 self.wfile.write('<title>Denied: %s</title>' % e)
938 self.wfile.write('</head><body>') 948 self.wfile.write('</head><body>')
939 self.wfile.write('auth=%s<p>' % auth) 949 self.wfile.write('auth=%s<p>' % auth)
940 self.wfile.write('b64str=%s<p>' % b64str) 950 self.wfile.write('b64str=%s<p>' % b64str)
941 self.wfile.write('username: %s<p>' % username) 951 self.wfile.write('username: %s<p>' % username)
942 self.wfile.write('userpass: %s<p>' % userpass) 952 self.wfile.write('userpass: %s<p>' % userpass)
943 self.wfile.write('password: %s<p>' % password) 953 self.wfile.write('password: %s<p>' % password)
944 self.wfile.write('You sent:<br>%s<p>' % self.headers) 954 self.wfile.write('You sent:<br>%s<p>' % self.headers)
945 self.wfile.write('</body></html>') 955 self.wfile.write('</body></html>')
946 return True 956 return True
947 957
948 # Authentication successful. (Return a cachable response to allow for 958 # Authentication successful. (Return a cachable response to allow for
949 # testing cached pages that require authentication.) 959 # testing cached pages that require authentication.)
950 if_none_match = self.headers.getheader('if-none-match') 960 if_none_match = self.headers.getheader('if-none-match')
951 if if_none_match == "abc": 961 if if_none_match == "abc":
952 self.send_response(304) 962 self.send_response(304)
953 self.end_headers() 963 self.end_headers()
964 elif url_path.endswith(".gif"):
965 # Using chrome/test/data/google/logo.gif as the test image
966 test_image_path = ['google', 'logo.gif']
967 gif_path = os.path.join(self.server.data_dir, *test_image_path)
968 if not os.path.isfile(gif_path):
969 self.send_error(404)
970 return True
971
972 f = open(gif_path, "rb")
973 data = f.read()
974 f.close()
975
976 self.send_response(200)
977 self.send_header('Content-type', 'image/gif')
978 self.send_header('Cache-control', 'max-age=60000')
979 self.send_header('Etag', 'abc')
980 self.end_headers()
981 self.wfile.write(data)
954 else: 982 else:
955 self.send_response(200) 983 self.send_response(200)
956 self.send_header('Content-type', 'text/html') 984 self.send_header('Content-type', 'text/html')
957 self.send_header('Cache-control', 'max-age=60000') 985 self.send_header('Cache-control', 'max-age=60000')
958 self.send_header('Etag', 'abc') 986 self.send_header('Etag', 'abc')
959 self.end_headers() 987 self.end_headers()
960 self.wfile.write('<html><head>') 988 self.wfile.write('<html><head>')
961 self.wfile.write('<title>%s/%s</title>' % (username, password)) 989 self.wfile.write('<title>%s/%s</title>' % (username, password))
962 self.wfile.write('</head><body>') 990 self.wfile.write('</head><body>')
963 self.wfile.write('auth=%s<p>' % auth) 991 self.wfile.write('auth=%s<p>' % auth)
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 'option may appear multiple times, indicating ' 1498 'option may appear multiple times, indicating '
1471 'multiple algorithms should be enabled.'); 1499 'multiple algorithms should be enabled.');
1472 option_parser.add_option('', '--file-root-url', default='/files/', 1500 option_parser.add_option('', '--file-root-url', default='/files/',
1473 help='Specify a root URL for files served.') 1501 help='Specify a root URL for files served.')
1474 option_parser.add_option('', '--startup-pipe', type='int', 1502 option_parser.add_option('', '--startup-pipe', type='int',
1475 dest='startup_pipe', 1503 dest='startup_pipe',
1476 help='File handle of pipe to parent process') 1504 help='File handle of pipe to parent process')
1477 options, args = option_parser.parse_args() 1505 options, args = option_parser.parse_args()
1478 1506
1479 sys.exit(main(options, args)) 1507 sys.exit(main(options, args))
OLDNEW
« no previous file with comments | « chrome/test/data/login/single_realm.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698