| Index: net/websockets/websocket_handshake_stream_create_helper_test.cc
|
| diff --git a/net/websockets/websocket_handshake_stream_create_helper_test.cc b/net/websockets/websocket_handshake_stream_create_helper_test.cc
|
| deleted file mode 100644
|
| index 8edbc66efe3fc54162ec48988952c8cabff18106..0000000000000000000000000000000000000000
|
| --- a/net/websockets/websocket_handshake_stream_create_helper_test.cc
|
| +++ /dev/null
|
| @@ -1,195 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "net/websockets/websocket_handshake_stream_create_helper.h"
|
| -
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "net/base/completion_callback.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "net/http/http_request_headers.h"
|
| -#include "net/http/http_request_info.h"
|
| -#include "net/http/http_response_headers.h"
|
| -#include "net/http/http_response_info.h"
|
| -#include "net/socket/client_socket_handle.h"
|
| -#include "net/socket/socket_test_util.h"
|
| -#include "net/websockets/websocket_basic_handshake_stream.h"
|
| -#include "net/websockets/websocket_stream.h"
|
| -#include "net/websockets/websocket_test_util.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace net {
|
| -namespace {
|
| -
|
| -// This class encapsulates the details of creating a mock ClientSocketHandle.
|
| -class MockClientSocketHandleFactory {
|
| - public:
|
| - MockClientSocketHandleFactory()
|
| - : histograms_("a"),
|
| - pool_(1, 1, &histograms_, socket_factory_maker_.factory()) {}
|
| -
|
| - // The created socket expects |expect_written| to be written to the socket,
|
| - // and will respond with |return_to_read|. The test will fail if the expected
|
| - // text is not written, or if all the bytes are not read.
|
| - scoped_ptr<ClientSocketHandle> CreateClientSocketHandle(
|
| - const std::string& expect_written,
|
| - const std::string& return_to_read) {
|
| - socket_factory_maker_.SetExpectations(expect_written, return_to_read);
|
| - scoped_ptr<ClientSocketHandle> socket_handle(new ClientSocketHandle);
|
| - socket_handle->Init(
|
| - "a",
|
| - scoped_refptr<MockTransportSocketParams>(),
|
| - MEDIUM,
|
| - CompletionCallback(),
|
| - &pool_,
|
| - BoundNetLog());
|
| - return socket_handle.Pass();
|
| - }
|
| -
|
| - private:
|
| - WebSocketDeterministicMockClientSocketFactoryMaker socket_factory_maker_;
|
| - ClientSocketPoolHistograms histograms_;
|
| - MockTransportClientSocketPool pool_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MockClientSocketHandleFactory);
|
| -};
|
| -
|
| -class TestConnectDelegate : public WebSocketStream::ConnectDelegate {
|
| - public:
|
| - ~TestConnectDelegate() override {}
|
| -
|
| - void OnSuccess(scoped_ptr<WebSocketStream> stream) override {}
|
| - void OnFailure(const std::string& failure_message) override {}
|
| - void OnStartOpeningHandshake(
|
| - scoped_ptr<WebSocketHandshakeRequestInfo> request) override {}
|
| - void OnFinishOpeningHandshake(
|
| - scoped_ptr<WebSocketHandshakeResponseInfo> response) override {}
|
| - void OnSSLCertificateError(
|
| - scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks>
|
| - ssl_error_callbacks,
|
| - const SSLInfo& ssl_info,
|
| - bool fatal) override {}
|
| -};
|
| -
|
| -class WebSocketHandshakeStreamCreateHelperTest : public ::testing::Test {
|
| - protected:
|
| - scoped_ptr<WebSocketStream> CreateAndInitializeStream(
|
| - const std::string& socket_url,
|
| - const std::string& socket_host,
|
| - const std::string& socket_path,
|
| - const std::vector<std::string>& sub_protocols,
|
| - const std::string& origin,
|
| - const std::string& extra_request_headers,
|
| - const std::string& extra_response_headers) {
|
| - WebSocketHandshakeStreamCreateHelper create_helper(&connect_delegate_,
|
| - sub_protocols);
|
| - create_helper.set_failure_message(&failure_message_);
|
| -
|
| - scoped_ptr<ClientSocketHandle> socket_handle =
|
| - socket_handle_factory_.CreateClientSocketHandle(
|
| - WebSocketStandardRequest(socket_path, socket_host, origin,
|
| - extra_request_headers),
|
| - WebSocketStandardResponse(extra_response_headers));
|
| -
|
| - scoped_ptr<WebSocketHandshakeStreamBase> handshake(
|
| - create_helper.CreateBasicStream(socket_handle.Pass(), false));
|
| -
|
| - // If in future the implementation type returned by CreateBasicStream()
|
| - // changes, this static_cast will be wrong. However, in that case the test
|
| - // will fail and AddressSanitizer should identify the issue.
|
| - static_cast<WebSocketBasicHandshakeStream*>(handshake.get())
|
| - ->SetWebSocketKeyForTesting("dGhlIHNhbXBsZSBub25jZQ==");
|
| -
|
| - HttpRequestInfo request_info;
|
| - request_info.url = GURL(socket_url);
|
| - request_info.method = "GET";
|
| - request_info.load_flags = LOAD_DISABLE_CACHE;
|
| - int rv = handshake->InitializeStream(
|
| - &request_info, DEFAULT_PRIORITY, BoundNetLog(), CompletionCallback());
|
| - EXPECT_EQ(OK, rv);
|
| -
|
| - HttpRequestHeaders headers;
|
| - headers.SetHeader("Host", "localhost");
|
| - headers.SetHeader("Connection", "Upgrade");
|
| - headers.SetHeader("Pragma", "no-cache");
|
| - headers.SetHeader("Cache-Control", "no-cache");
|
| - headers.SetHeader("Upgrade", "websocket");
|
| - headers.SetHeader("Origin", origin);
|
| - headers.SetHeader("Sec-WebSocket-Version", "13");
|
| - headers.SetHeader("User-Agent", "");
|
| - headers.SetHeader("Accept-Encoding", "gzip, deflate");
|
| - headers.SetHeader("Accept-Language", "en-us,fr");
|
| -
|
| - HttpResponseInfo response;
|
| - TestCompletionCallback dummy;
|
| -
|
| - rv = handshake->SendRequest(headers, &response, dummy.callback());
|
| -
|
| - EXPECT_EQ(OK, rv);
|
| -
|
| - rv = handshake->ReadResponseHeaders(dummy.callback());
|
| - EXPECT_EQ(OK, rv);
|
| - EXPECT_EQ(101, response.headers->response_code());
|
| - EXPECT_TRUE(response.headers->HasHeaderValue("Connection", "Upgrade"));
|
| - EXPECT_TRUE(response.headers->HasHeaderValue("Upgrade", "websocket"));
|
| - return handshake->Upgrade();
|
| - }
|
| -
|
| - MockClientSocketHandleFactory socket_handle_factory_;
|
| - TestConnectDelegate connect_delegate_;
|
| - std::string failure_message_;
|
| -};
|
| -
|
| -// Confirm that the basic case works as expected.
|
| -TEST_F(WebSocketHandshakeStreamCreateHelperTest, BasicStream) {
|
| - scoped_ptr<WebSocketStream> stream = CreateAndInitializeStream(
|
| - "ws://localhost/", "localhost", "/", std::vector<std::string>(),
|
| - "http://localhost/", "", "");
|
| - EXPECT_EQ("", stream->GetExtensions());
|
| - EXPECT_EQ("", stream->GetSubProtocol());
|
| -}
|
| -
|
| -// Verify that the sub-protocols are passed through.
|
| -TEST_F(WebSocketHandshakeStreamCreateHelperTest, SubProtocols) {
|
| - std::vector<std::string> sub_protocols;
|
| - sub_protocols.push_back("chat");
|
| - sub_protocols.push_back("superchat");
|
| - scoped_ptr<WebSocketStream> stream = CreateAndInitializeStream(
|
| - "ws://localhost/", "localhost", "/", sub_protocols, "http://localhost/",
|
| - "Sec-WebSocket-Protocol: chat, superchat\r\n",
|
| - "Sec-WebSocket-Protocol: superchat\r\n");
|
| - EXPECT_EQ("superchat", stream->GetSubProtocol());
|
| -}
|
| -
|
| -// Verify that extension name is available. Bad extension names are tested in
|
| -// websocket_stream_test.cc.
|
| -TEST_F(WebSocketHandshakeStreamCreateHelperTest, Extensions) {
|
| - scoped_ptr<WebSocketStream> stream = CreateAndInitializeStream(
|
| - "ws://localhost/", "localhost", "/", std::vector<std::string>(),
|
| - "http://localhost/", "",
|
| - "Sec-WebSocket-Extensions: permessage-deflate\r\n");
|
| - EXPECT_EQ("permessage-deflate", stream->GetExtensions());
|
| -}
|
| -
|
| -// Verify that extension parameters are available. Bad parameters are tested in
|
| -// websocket_stream_test.cc.
|
| -TEST_F(WebSocketHandshakeStreamCreateHelperTest, ExtensionParameters) {
|
| - scoped_ptr<WebSocketStream> stream = CreateAndInitializeStream(
|
| - "ws://localhost/", "localhost", "/", std::vector<std::string>(),
|
| - "http://localhost/", "",
|
| - "Sec-WebSocket-Extensions: permessage-deflate;"
|
| - " client_max_window_bits=14; server_max_window_bits=14;"
|
| - " server_no_context_takeover; client_no_context_takeover\r\n");
|
| -
|
| - EXPECT_EQ(
|
| - "permessage-deflate;"
|
| - " client_max_window_bits=14; server_max_window_bits=14;"
|
| - " server_no_context_takeover; client_no_context_takeover",
|
| - stream->GetExtensions());
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace net
|
|
|