Index: net/http/http_network_transaction_unittest.cc |
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc |
index ed7470b3a618ffba8be29837496992d3e2f5ca21..71d71196c7f290984f13df1898645ebabc0770a1 100644 |
--- a/net/http/http_network_transaction_unittest.cc |
+++ b/net/http/http_network_transaction_unittest.cc |
@@ -21,6 +21,8 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
#include "base/run_loop.h" |
+#include "base/stl_util.h" |
+#include "base/strings/string_number_conversions.h" |
Bence
2016/01/23 22:31:17
Sorry, I cannot seem to find what these two includ
nharper
2016/01/25 18:54:54
I don't remember what they were for and it compile
|
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/test/test_file_util.h" |
@@ -75,6 +77,7 @@ |
#include "net/spdy/spdy_session.h" |
#include "net/spdy/spdy_session_pool.h" |
#include "net/spdy/spdy_test_util_common.h" |
+#include "net/ssl/default_channel_id_store.h" |
#include "net/ssl/ssl_cert_request_info.h" |
#include "net/ssl/ssl_config_service.h" |
#include "net/ssl/ssl_config_service_defaults.h" |
@@ -14413,6 +14416,12 @@ class FakeStream : public HttpStream, |
bool GetRemoteEndpoint(IPEndPoint* endpoint) override { return false; } |
+ Error GetSignedEKMForTokenBinding(crypto::ECPrivateKey* key, |
+ std::vector<uint8_t>* out) override { |
+ ADD_FAILURE(); |
+ return ERR_NOT_IMPLEMENTED; |
+ } |
+ |
void Drain(HttpNetworkSession* session) override { ADD_FAILURE(); } |
void PopulateNetErrorDetails(NetErrorDetails* details) override { return; } |
@@ -14644,6 +14653,12 @@ class FakeWebSocketBasicHandshakeStream : public WebSocketHandshakeStreamBase { |
bool GetRemoteEndpoint(IPEndPoint* endpoint) override { return false; } |
+ Error GetSignedEKMForTokenBinding(crypto::ECPrivateKey* key, |
+ std::vector<uint8_t>* out) override { |
+ ADD_FAILURE(); |
+ return ERR_NOT_IMPLEMENTED; |
+ } |
+ |
void Drain(HttpNetworkSession* session) override { NOTREACHED(); } |
void PopulateNetErrorDetails(NetErrorDetails* details) override { return; } |
@@ -15802,4 +15817,38 @@ TEST_P(HttpNetworkTransactionTest, DisableNPN) { |
EXPECT_TRUE(trans.server_ssl_config_.npn_protos.empty()); |
} |
+#if !defined(OS_IOS) |
+TEST_P(HttpNetworkTransactionTest, TokenBindingSpdy) { |
+ const std::string https_url = "https://www.example.com"; |
+ HttpRequestInfo request; |
+ request.url = GURL(https_url); |
+ request.method = "GET"; |
+ |
+ SSLSocketDataProvider ssl(ASYNC, OK); |
+ ssl.token_binding_negotiated = true; |
+ ssl.token_binding_key_param = TB_PARAM_ECDSAP256; |
+ ssl.SetNextProto(GetProtocol()); |
+ session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
+ scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
Bence
2016/01/23 22:31:17
Optional: add an empty line above this one.
Bence
2016/01/23 22:31:17
Style guide recommends nullptr instead of NULL for
nharper
2016/01/25 18:54:54
Done.
nharper
2016/01/25 18:54:54
Done.
|
+ scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
+ MockRead reads[] = {CreateMockRead(*resp, 1), CreateMockRead(*body, 2), |
Bence
2016/01/23 22:31:17
Don't you have to count mock data from 0? I'd be
nharper
2016/01/25 18:54:54
I don't know what the sequence number is supposed
Bence
2016/01/25 21:45:19
Well, if the sequence numbers do not seem to matte
nharper
2016/01/25 22:06:17
Done.
|
+ MockRead(ASYNC, ERR_IO_PENDING, 3)}; |
+ StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
+ session_deps_.channel_id_service.reset(new ChannelIDService( |
+ new DefaultChannelIDStore(NULL), base::ThreadTaskRunnerHandle::Get())); |
+ scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
Bence
2016/01/23 22:31:18
Optional: add an empty line above this one.
nharper
2016/01/25 18:54:54
Done.
|
+ HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
+ TestCompletionCallback callback; |
+ EXPECT_EQ(ERR_IO_PENDING, |
+ trans.Start(&request, callback.callback(), BoundNetLog())); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ |
+ EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
+ HttpRequestHeaders headers; |
+ ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
+ EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
+} |
+#endif // !defined(OS_IOS) |
+ |
} // namespace net |