summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorcbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-11 18:16:58 +0000
committercbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-11 18:16:58 +0000
commit41610bf6396d6bd1d6f597f0a163a30bb53919cd (patch)
tree335dd7c845d9a68e093de761ee21bc84d2839ebf /net
parent603b3f168d4e6b546ba6c8597fb6d16fe637f88e (diff)
downloadchromium_src-41610bf6396d6bd1d6f597f0a163a30bb53919cd.zip
chromium_src-41610bf6396d6bd1d6f597f0a163a30bb53919cd.tar.gz
chromium_src-41610bf6396d6bd1d6f597f0a163a30bb53919cd.tar.bz2
All SSL UI tests work with ephemeral ports.
This also changes the testserver text replacement hooks to accept base64 encoded pairs, and to support multiple replacement texts. These changes were needed for some of the "ssl/top_frame.html" based tests, which contained a frame with an HTML page referencing three URLs on three tdifferent test servers. BUG=56814 TEST=browser_tests --gtest_filter="*SSLUI*" Review URL: http://codereview.chromium.org/4664009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65819 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/test/test_server.cc42
-rw-r--r--net/test/test_server.h13
-rwxr-xr-xnet/tools/testserver/testserver.py26
3 files changed, 65 insertions, 16 deletions
diff --git a/net/test/test_server.cc b/net/test/test_server.cc
index 8e92699..5d197b9 100644
--- a/net/test/test_server.cc
+++ b/net/test/test_server.cc
@@ -14,6 +14,7 @@
#include "net/base/x509_certificate.h"
#endif
+#include "base/base64.h"
#include "base/command_line.h"
#include "base/debug/leak_annotations.h"
#include "base/file_util.h"
@@ -252,13 +253,13 @@ bool TestServer::GetAddressList(AddressList* address_list) const {
return true;
}
-GURL TestServer::GetURL(const std::string& path) {
+GURL TestServer::GetURL(const std::string& path) const {
return GURL(GetScheme() + "://" + host_port_pair_.ToString() +
"/" + path);
}
GURL TestServer::GetURLWithUser(const std::string& path,
- const std::string& user) {
+ const std::string& user) const {
return GURL(GetScheme() + "://" + user + "@" +
host_port_pair_.ToString() +
"/" + path);
@@ -266,12 +267,47 @@ GURL TestServer::GetURLWithUser(const std::string& path,
GURL TestServer::GetURLWithUserAndPassword(const std::string& path,
const std::string& user,
- const std::string& password) {
+ const std::string& password) const {
return GURL(GetScheme() + "://" + user + ":" + password +
"@" + host_port_pair_.ToString() +
"/" + path);
}
+// static
+bool TestServer::GetFilePathWithReplacements(
+ const std::string& original_file_path,
+ const std::vector<StringPair>& text_to_replace,
+ std::string* replacement_path) {
+ std::string new_file_path = original_file_path;
+ bool first_query_parameter = true;
+ const std::vector<StringPair>::const_iterator end = text_to_replace.end();
+ for (std::vector<StringPair>::const_iterator it = text_to_replace.begin();
+ it != end;
+ ++it) {
+ const std::string& old_text = it->first;
+ const std::string& new_text = it->second;
+ std::string base64_old;
+ std::string base64_new;
+ if (!base::Base64Encode(old_text, &base64_old))
+ return false;
+ if (!base::Base64Encode(new_text, &base64_new))
+ return false;
+ if (first_query_parameter) {
+ new_file_path += "?";
+ first_query_parameter = false;
+ } else {
+ new_file_path += "&";
+ }
+ new_file_path += "replace_text=";
+ new_file_path += base64_old;
+ new_file_path += ":";
+ new_file_path += base64_new;
+ }
+
+ *replacement_path = new_file_path;
+ return true;
+}
+
bool TestServer::SetPythonPath() {
FilePath third_party_dir;
if (!PathService::Get(base::DIR_SOURCE_ROOT, &third_party_dir)) {
diff --git a/net/test/test_server.h b/net/test/test_server.h
index 8affc12..b92c91d 100644
--- a/net/test/test_server.h
+++ b/net/test/test_server.h
@@ -7,6 +7,7 @@
#pragma once
#include <string>
+#include <utility>
#include <vector>
#include "build/build_config.h"
@@ -117,14 +118,20 @@ class TestServer {
std::string GetScheme() const;
bool GetAddressList(AddressList* address_list) const WARN_UNUSED_RESULT;
- GURL GetURL(const std::string& path);
+ GURL GetURL(const std::string& path) const;
GURL GetURLWithUser(const std::string& path,
- const std::string& user);
+ const std::string& user) const;
GURL GetURLWithUserAndPassword(const std::string& path,
const std::string& user,
- const std::string& password);
+ const std::string& password) const;
+
+ typedef std::pair<std::string, std::string> StringPair;
+ static bool GetFilePathWithReplacements(
+ const std::string& original_path,
+ const std::vector<StringPair>& text_to_replace,
+ std::string* replacement_path);
private:
void Init(const FilePath& document_root);
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
index 53444e3..ccb589b 100755
--- a/net/tools/testserver/testserver.py
+++ b/net/tools/testserver/testserver.py
@@ -577,20 +577,26 @@ class TestPageHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def _ReplaceFileData(self, data, query_parameters):
"""Replaces matching substrings in a file.
- If the 'replace_orig' and 'replace_new' URL query parameters are present,
- a new string is returned with all occasions of the 'replace_orig' value
- replaced by the 'replace_new' value.
+ If the 'replace_text' URL query parameter is present, it is expected to be
+ of the form old_text:new_text, which indicates that any old_text strings in
+ the file are replaced with new_text. Multiple 'replace_text' parameters may
+ be specified.
If the parameters are not present, |data| is returned.
"""
query_dict = cgi.parse_qs(query_parameters)
- orig_values = query_dict.get('replace_orig', [])
- new_values = query_dict.get('replace_new', [])
- if not orig_values or not new_values:
- return data
- orig_value = orig_values[0]
- new_value = new_values[0]
- return data.replace(orig_value, new_value)
+ replace_text_values = query_dict.get('replace_text', [])
+ for replace_text_value in replace_text_values:
+ replace_text_args = replace_text_value.split(':')
+ if len(replace_text_args) != 2:
+ raise ValueError(
+ 'replace_text must be of form old_text:new_text. Actual value: %s' %
+ replace_text_value)
+ old_text_b64, new_text_b64 = replace_text_args
+ old_text = base64.urlsafe_b64decode(old_text_b64)
+ new_text = base64.urlsafe_b64decode(new_text_b64)
+ data = data.replace(old_text, new_text)
+ return data
def FileHandler(self):
"""This handler sends the contents of the requested file. Wow, it's like