Index: net/tools/testserver/testserver.py |
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py |
index 56d7c0ed89792b98478cbb574f70c5f4da82f648..acfafae79516c3e82ca85e4578329ae77079545b 100755 |
--- a/net/tools/testserver/testserver.py |
+++ b/net/tools/testserver/testserver.py |
@@ -913,8 +913,18 @@ class TestPageHandler(BasePageHandler): |
return False |
username = userpass = password = b64str = "" |
+ expected_password = 'secret' |
+ realm = 'testrealm' |
+ set_cookie_if_challenged = False |
- set_cookie_if_challenged = self.path.find('?set-cookie-if-challenged') > 0 |
+ _, _, url_path, _, query, _ = urlparse.urlparse(self.path) |
+ query_params = cgi.parse_qs(query, True) |
+ if 'set-cookie-if-challenged' in query_params: |
+ set_cookie_if_challenged = True |
+ if 'password' in query_params: |
+ expected_password = query_params['password'][0] |
+ if 'realm' in query_params: |
+ realm = query_params['realm'][0] |
auth = self.headers.getheader('authorization') |
try: |
@@ -923,12 +933,12 @@ class TestPageHandler(BasePageHandler): |
b64str = re.findall(r'Basic (\S+)', auth)[0] |
userpass = base64.b64decode(b64str) |
username, password = re.findall(r'([^:]+):(\S+)', userpass)[0] |
- if password != 'secret': |
+ if password != expected_password: |
raise Exception('wrong password') |
except Exception, e: |
# Authentication failed. |
self.send_response(401) |
- self.send_header('WWW-Authenticate', 'Basic realm="testrealm"') |
+ self.send_header('WWW-Authenticate', 'Basic realm="%s"' % realm) |
self.send_header('Content-type', 'text/html') |
if set_cookie_if_challenged: |
self.send_header('Set-Cookie', 'got_challenged=true') |
@@ -951,6 +961,24 @@ class TestPageHandler(BasePageHandler): |
if if_none_match == "abc": |
self.send_response(304) |
self.end_headers() |
+ elif url_path.endswith(".gif"): |
+ # Using chrome/test/data/google/logo.gif as the test image |
+ test_image_path = ['google', 'logo.gif'] |
+ gif_path = os.path.join(self.server.data_dir, *test_image_path) |
+ if not os.path.isfile(gif_path): |
+ self.send_error(404) |
+ return True |
+ |
+ f = open(gif_path, "rb") |
+ data = f.read() |
+ f.close() |
+ |
+ self.send_response(200) |
+ self.send_header('Content-type', 'image/gif') |
+ self.send_header('Cache-control', 'max-age=60000') |
+ self.send_header('Etag', 'abc') |
+ self.end_headers() |
+ self.wfile.write(data) |
else: |
self.send_response(200) |
self.send_header('Content-type', 'text/html') |