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

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: mmenke@ 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..88b6799855e18edf3a1f7fdd5f69ab76cff007c9 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,65 @@ 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/"},
+ {"ws://upgrade.test/", true, "wss://upgrade.test/"},
+ {"http://upgrade.test:123/", true, "https://upgrade.test:123/"},
+ {"ws://upgrade.test:123/", true, "wss://upgrade.test:123/"},
+ {"http://no-upgrade.test/", false, "http://no-upgrade.test/"},
+ {"ws://no-upgrade.test/", false, "ws://no-upgrade.test/"},
+ {"http://no-upgrade.test:123/", false, "http://no-upgrade.test:123/"},
+ {"ws://no-upgrade.test:123/", false, "ws://no-upgrade.test:123/"},
+ };
+
+ 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() {}
@@ -944,6 +1007,22 @@ TEST_F(URLRequestHttpJobWebSocketTest, CreateHelperPassedThrough) {
#endif // !defined(OS_IOS)
+class URLRequestHttpJobInternalRedirectTest : public ::testing::Test {
mmenke 2016/06/17 16:40:29 Remove this.
Mike West 2016/06/17 19:44:34 Ugh. Yes, thank you. :)
+ protected:
+ URLRequestHttpJobInternalRedirectTest()
+ : context_(new TestURLRequestContext(true)) {
+ std::unique_ptr<HttpNetworkSession::Params> params(
+ new HttpNetworkSession::Params);
+ context_->set_enable_brotli(true);
+ context_->set_http_network_session_params(std::move(params));
+ context_->set_client_socket_factory(&socket_factory_);
+ context_->Init();
+ }
+
+ MockClientSocketFactory socket_factory_;
+ std::unique_ptr<TestURLRequestContext> context_;
+};
+
} // namespace
} // namespace net
« 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