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

Unified Diff: net/url_request/url_request_http_job_unittest.cc

Issue 2079783002: Move HSTS redirection from URLRequest to URLRequestHTTPJob. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS Created 4 years, 6 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
« no previous file with comments | « net/url_request/url_request_http_job.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/url_request/url_request_http_job_unittest.cc
diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc
index c12807f85b6605d6acaf3c7455e03493a7e1cd72..978fae639167e2dcd1cc9945a8ab10cfdde37391 100644
--- a/net/url_request/url_request_http_job_unittest.cc
+++ b/net/url_request/url_request_http_job_unittest.cc
@@ -21,6 +21,9 @@
#include "net/cookies/cookie_store_test_helpers.h"
#include "net/http/http_transaction_factory.h"
#include "net/http/http_transaction_test_util.h"
+#include "net/log/test_net_log.h"
+#include "net/log/test_net_log_entry.h"
+#include "net/log/test_net_log_util.h"
#include "net/socket/socket_test_util.h"
#include "net/test/cert_test_util.h"
#include "net/url_request/url_request.h"
@@ -64,7 +67,7 @@ class URLRequestHttpJobTest : public ::testing::Test {
EXPECT_TRUE(test_job_factory_.SetProtocolHandler(
url::kHttpScheme, base::WrapUnique(test_job_interceptor_)));
context_.set_job_factory(&test_job_factory_);
-
+ context_.set_net_log(&net_log_);
context_.Init();
req_ = context_.CreateRequest(GURL("http://www.example.com"),
@@ -110,6 +113,7 @@ class URLRequestHttpJobTest : public ::testing::Test {
TestURLRequestContext context_;
TestDelegate delegate_;
+ TestNetLog net_log_;
std::unique_ptr<URLRequest> req_;
};
@@ -625,6 +629,69 @@ TEST_F(URLRequestHttpJobTest, SdchAdvertisementPost) {
EXPECT_FALSE(TransactionAcceptsSdchEncoding());
}
+TEST_F(URLRequestHttpJobTest, HSTSInternalRedirectTest) {
+ // Setup HSTS state.
+ context_.transport_security_state()->AddHSTS(
+ "upgrade.test", base::Time::Now() + base::TimeDelta::FromSeconds(10),
+ true);
+ ASSERT_TRUE(
+ context_.transport_security_state()->ShouldUpgradeToSSL("upgrade.test"));
+ ASSERT_FALSE(context_.transport_security_state()->ShouldUpgradeToSSL(
+ "no-upgrade.test"));
+
+ struct TestCase {
+ const char* url;
+ bool upgrade_expected;
+ const char* url_expected;
+ } cases[] = {
+ {"http://upgrade.test/", true, "https://upgrade.test/"},
+ {"http://upgrade.test:123/", true, "https://upgrade.test:123/"},
+ {"http://no-upgrade.test/", false, "http://no-upgrade.test/"},
+ {"http://no-upgrade.test:123/", false, "http://no-upgrade.test:123/"},
+// iOS doesn't support websockets; see the comments above
+// URLRequestHttpJobWebSocketTest for detail.
+#if !defined(OS_IOS)
Mike West 2016/06/20 13:36:41 mmenke@: WebSockets aren't enabled on iOS. I'm dis
+ {"ws://upgrade.test/", true, "wss://upgrade.test/"},
+ {"ws://upgrade.test:123/", true, "wss://upgrade.test:123/"},
+ {"ws://no-upgrade.test/", false, "ws://no-upgrade.test/"},
+ {"ws://no-upgrade.test:123/", false, "ws://no-upgrade.test:123/"},
+#endif // !defined(OS_IOS)
+ };
+
+ for (const auto& test : cases) {
+ SCOPED_TRACE(test.url);
+ TestDelegate d;
+ TestNetworkDelegate network_delegate;
+ std::unique_ptr<URLRequest> r(
+ context_.CreateRequest(GURL(test.url), DEFAULT_PRIORITY, &d));
+
+ net_log_.Clear();
+ r->Start();
+ base::RunLoop().Run();
+
+ if (test.upgrade_expected) {
+ net::TestNetLogEntry::List entries;
+ net_log_.GetEntries(&entries);
+ int redirects = 0;
+ for (const auto& entry : entries) {
+ if (entry.type == net::NetLog::TYPE_URL_REQUEST_REDIRECT_JOB) {
+ redirects++;
+ std::string value;
+ EXPECT_TRUE(entry.GetStringValue("reason", &value));
+ EXPECT_EQ("HSTS", value);
+ }
+ }
+ EXPECT_EQ(1, redirects);
+ EXPECT_EQ(1, d.received_redirect_count());
+ EXPECT_EQ(2u, r->url_chain().size());
+ } else {
+ EXPECT_EQ(0, d.received_redirect_count());
+ EXPECT_EQ(1u, r->url_chain().size());
+ }
+ EXPECT_EQ(GURL(test.url_expected), r->url());
+ }
+}
+
class MockSdchObserver : public SdchObserver {
public:
MockSdchObserver() {}
« no previous file with comments | « net/url_request/url_request_http_job.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698