Index: net/url_request/url_request_unittest.cc |
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc |
index 6f78c9c2940114556a0794e90d57771dcd37f826..e873aea1e612b3fba2fc3e5c9ae6fc41be80c7a6 100644 |
--- a/net/url_request/url_request_unittest.cc |
+++ b/net/url_request/url_request_unittest.cc |
@@ -8624,6 +8624,33 @@ TEST_F(HTTPSRequestTest, HSTSCrossOriginAddHeaders) { |
EXPECT_EQ(kOriginHeaderValue, received_cors_header); |
} |
+// Test that DHE-only servers fail with the expected dedicated error code. |
+TEST_F(HTTPSRequestTest, DHE) { |
+ SpawnedTestServer::SSLOptions ssl_options; |
+ ssl_options.key_exchanges = |
+ SpawnedTestServer::SSLOptions::KEY_EXCHANGE_DHE_RSA; |
+ SpawnedTestServer test_server( |
+ SpawnedTestServer::TYPE_HTTPS, ssl_options, |
+ base::FilePath(FILE_PATH_LITERAL("net/data/ssl"))); |
+ ASSERT_TRUE(test_server.Start()); |
+ |
+ TestDelegate d; |
+ { |
+ std::unique_ptr<URLRequest> r(default_context_.CreateRequest( |
+ test_server.GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); |
+ |
+ r->Start(); |
+ EXPECT_TRUE(r->is_pending()); |
+ |
+ base::RunLoop().Run(); |
+ |
+ EXPECT_EQ(1, d.response_started_count()); |
+ EXPECT_FALSE(r->status().is_success()); |
+ EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
+ EXPECT_EQ(ERR_SSL_OBSOLETE_CIPHER, r->status().error()); |
+ } |
+} |
+ |
// This just tests the behaviour of GetHSTSRedirect(). End-to-end tests of HSTS |
// are performed in net/websockets/websocket_end_to_end_test.cc. |
TEST(WebSocketURLRequestTest, HSTSApplied) { |