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

Unified Diff: net/http/http_network_transaction_unittest.cc

Issue 1378613004: Set Token-Binding HTTP header (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tb-tls-ext-new
Patch Set: Add another #if !defined(OS_IOS) Created 4 years, 11 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: 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

Powered by Google App Engine
This is Rietveld 408576698