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

Unified Diff: components/data_reduction_proxy/core/common/data_reduction_proxy_headers_unittest.cc

Issue 2777823002: Bypass DRP if a redirect cycle is detected (Closed)
Patch Set: ryansturm comments Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: components/data_reduction_proxy/core/common/data_reduction_proxy_headers_unittest.cc
diff --git a/components/data_reduction_proxy/core/common/data_reduction_proxy_headers_unittest.cc b/components/data_reduction_proxy/core/common/data_reduction_proxy_headers_unittest.cc
index e2f884493325f168f9be12986e7c3b37cbb85f1e..cba90e139d2ca891f9a957e7d3f090c26be56990 100644
--- a/components/data_reduction_proxy/core/common/data_reduction_proxy_headers_unittest.cc
+++ b/components/data_reduction_proxy/core/common/data_reduction_proxy_headers_unittest.cc
@@ -18,6 +18,7 @@
#include "net/http/http_response_headers.h"
#include "net/proxy/proxy_service.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
namespace data_reduction_proxy {
@@ -497,9 +498,8 @@ TEST_F(DataReductionProxyHeadersTest, GetProxyBypassInfo) {
new net::HttpResponseHeaders(headers));
DataReductionProxyInfo data_reduction_proxy_info;
- EXPECT_EQ(
- tests[i].expected_result,
- ParseHeadersForBypassInfo(parsed.get(), &data_reduction_proxy_info));
+ EXPECT_EQ(tests[i].expected_result,
+ ParseHeadersForBypassInfo(*parsed, &data_reduction_proxy_info));
EXPECT_EQ(tests[i].expected_retry_delay,
data_reduction_proxy_info.bypass_duration.InSeconds());
EXPECT_EQ(tests[i].expected_bypass_all,
@@ -520,8 +520,7 @@ TEST_F(DataReductionProxyHeadersTest, ParseHeadersAndSetProxyInfo) {
new net::HttpResponseHeaders(headers));
DataReductionProxyInfo data_reduction_proxy_info;
- EXPECT_TRUE(
- ParseHeadersForBypassInfo(parsed.get(), &data_reduction_proxy_info));
+ EXPECT_TRUE(ParseHeadersForBypassInfo(*parsed, &data_reduction_proxy_info));
EXPECT_LE(60, data_reduction_proxy_info.bypass_duration.InSeconds());
EXPECT_GE(5 * 60, data_reduction_proxy_info.bypass_duration.InSeconds());
EXPECT_FALSE(data_reduction_proxy_info.bypass_all);
@@ -612,11 +611,11 @@ TEST_F(DataReductionProxyHeadersTest, HasDataReductionProxyViaHeader) {
bool has_chrome_proxy_via_header, has_intermediary;
if (tests[i].ignore_intermediary) {
has_chrome_proxy_via_header =
- HasDataReductionProxyViaHeader(parsed.get(), NULL);
+ HasDataReductionProxyViaHeader(*parsed, NULL);
}
else {
has_chrome_proxy_via_header =
- HasDataReductionProxyViaHeader(parsed.get(), &has_intermediary);
+ HasDataReductionProxyViaHeader(*parsed, &has_intermediary);
}
EXPECT_EQ(tests[i].expected_result, has_chrome_proxy_via_header);
if (has_chrome_proxy_via_header && !tests[i].ignore_intermediary) {
@@ -768,8 +767,87 @@ TEST_F(DataReductionProxyHeadersTest, GetDataReductionProxyBypassEventType) {
tests[i].in_tamper_detection_experiment ? "TamperDetection_Enabled"
: "TamperDetection_Disabled");
- EXPECT_EQ(tests[i].expected_result, GetDataReductionProxyBypassType(
- parsed.get(), &chrome_proxy_info));
+ EXPECT_EQ(tests[i].expected_result,
+ GetDataReductionProxyBypassType(std::vector<GURL>(), *parsed,
+ &chrome_proxy_info));
+ }
+}
+
+TEST_F(DataReductionProxyHeadersTest,
+ GetDataReductionProxyBypassEventTypeURLRedirectCycle) {
+ const struct {
+ const char* headers;
+ std::vector<GURL> url_chain;
+ DataReductionProxyBypassType expected_result;
+ } tests[] = {
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>{GURL("http://google.com/1"),
+ GURL("http://google.com/2"),
+ GURL("http://google.com/1")},
+ BYPASS_EVENT_TYPE_URL_REDIRECT_CYCLE,
+ },
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>{
+ GURL("http://google.com/1"), GURL("http://google.com/2"),
+ GURL("http://google.com/1"), GURL("http://google.com/2")},
+ BYPASS_EVENT_TYPE_URL_REDIRECT_CYCLE,
+ },
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>{GURL("http://google.com/1")}, BYPASS_EVENT_TYPE_MAX,
+ },
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>{GURL("http://google.com/1"),
+ GURL("http://google.com/2")},
+ BYPASS_EVENT_TYPE_MAX,
+ },
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>{GURL("http://google.com/1"),
+ GURL("http://google.com/2"),
+ GURL("http://google.com/3")},
+ BYPASS_EVENT_TYPE_MAX,
+ },
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>{
+ GURL("http://google.com/1"), GURL("http://google.com/2"),
+ GURL("http://google.com/3"), GURL("http://google.com/1")},
+ BYPASS_EVENT_TYPE_URL_REDIRECT_CYCLE,
+ },
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>{
+ GURL("http://google.com/1"), GURL("http://google.com/2"),
+ GURL("http://google.com/1"), GURL("http://google.com/3")},
+ BYPASS_EVENT_TYPE_MAX,
+ },
+ {
+ "HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n",
+ std::vector<GURL>(), BYPASS_EVENT_TYPE_MAX,
+ }};
+
+ for (const auto& test : tests) {
+ std::string headers(test.headers);
+ HeadersToRaw(&headers);
+ scoped_refptr<net::HttpResponseHeaders> parsed(
+ new net::HttpResponseHeaders(headers));
+ DataReductionProxyInfo chrome_proxy_info;
+
+ EXPECT_EQ(test.expected_result,
+ GetDataReductionProxyBypassType(test.url_chain, *parsed,
+ &chrome_proxy_info));
}
}
« no previous file with comments | « components/data_reduction_proxy/core/common/data_reduction_proxy_headers.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698