| Index: net/server/web_socket_encoder_unittest.cc
|
| diff --git a/net/server/web_socket_encoder_unittest.cc b/net/server/web_socket_encoder_unittest.cc
|
| index 7bca8764753257c350357da3d0fa19458aeff9cf..43630a672028d4992edd2c5da703384380e7058d 100644
|
| --- a/net/server/web_socket_encoder_unittest.cc
|
| +++ b/net/server/web_socket_encoder_unittest.cc
|
| @@ -3,30 +3,73 @@
|
| // found in the LICENSE file.
|
|
|
| #include "net/server/web_socket_encoder.h"
|
| +
|
| +#include "net/websockets/websocket_deflate_parameters.h"
|
| +#include "net/websockets/websocket_extension.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace net {
|
|
|
| +TEST(WebSocketEncoderHandshakeTest, EmptyRequestShouldBeRejected) {
|
| + WebSocketDeflateParameters params;
|
| + std::string failure_message;
|
| + scoped_ptr<WebSocketEncoder> server(
|
| + WebSocketEncoder::CreateServer("", ¶ms, &failure_message));
|
| +
|
| + EXPECT_FALSE(server);
|
| + EXPECT_EQ("Failed to parse extensions header.", failure_message);
|
| +}
|
| +
|
| TEST(WebSocketEncoderHandshakeTest,
|
| CreateServerWithoutClientMaxWindowBitsParameter) {
|
| - std::string response_extensions;
|
| + WebSocketDeflateParameters params;
|
| + std::string failure_message;
|
| scoped_ptr<WebSocketEncoder> server(WebSocketEncoder::CreateServer(
|
| - "permessage-deflate", &response_extensions));
|
| - // The response must not include client_max_window_bits if the client didn't
|
| - // declare that it accepts the parameter.
|
| - EXPECT_EQ("permessage-deflate; server_max_window_bits=15",
|
| - response_extensions);
|
| + "permessage-deflate", ¶ms, &failure_message));
|
| +
|
| + ASSERT_TRUE(server);
|
| + EXPECT_TRUE(server->deflate_enabled());
|
| + EXPECT_EQ("permessage-deflate", params.AsExtension().ToString());
|
| }
|
|
|
| TEST(WebSocketEncoderHandshakeTest,
|
| CreateServerWithServerNoContextTakeoverParameter) {
|
| - std::string response_extensions;
|
| + WebSocketDeflateParameters params;
|
| + std::string failure_message;
|
| scoped_ptr<WebSocketEncoder> server(WebSocketEncoder::CreateServer(
|
| - "permessage-deflate; server_no_context_takeover", &response_extensions));
|
| - EXPECT_EQ(
|
| - "permessage-deflate; server_max_window_bits=15"
|
| - "; server_no_context_takeover",
|
| - response_extensions);
|
| + "permessage-deflate; server_no_context_takeover", ¶ms,
|
| + &failure_message));
|
| + ASSERT_TRUE(server);
|
| + EXPECT_TRUE(server->deflate_enabled());
|
| + EXPECT_EQ("permessage-deflate; server_no_context_takeover",
|
| + params.AsExtension().ToString());
|
| +}
|
| +
|
| +TEST(WebSocketEncoderHandshakeTest, FirstExtensionShouldBeChosen) {
|
| + WebSocketDeflateParameters params;
|
| + std::string failure_message;
|
| + scoped_ptr<WebSocketEncoder> server(WebSocketEncoder::CreateServer(
|
| + "permessage-deflate; server_no_context_takeover,"
|
| + "permessage-deflate; server_max_window_bits=15",
|
| + ¶ms, &failure_message));
|
| +
|
| + ASSERT_TRUE(server);
|
| + EXPECT_TRUE(server->deflate_enabled());
|
| + EXPECT_EQ("permessage-deflate; server_no_context_takeover",
|
| + params.AsExtension().ToString());
|
| +}
|
| +
|
| +TEST(WebSocketEncoderHandshakeTest, AllExtensionsShouldBeChecked) {
|
| + WebSocketDeflateParameters params;
|
| + std::string failure_message;
|
| + scoped_ptr<WebSocketEncoder> server(WebSocketEncoder::CreateServer(
|
| + "permessage-deflate; server_no_context_takeover,"
|
| + "permessage-deflate; Xserver_max_window_bits=15",
|
| + ¶ms, &failure_message));
|
| +
|
| + ASSERT_FALSE(server);
|
| + EXPECT_EQ("Received an unexpected permessage-deflate extension parameter",
|
| + failure_message);
|
| }
|
|
|
| class WebSocketEncoderTest : public testing::Test {
|
| @@ -35,7 +78,7 @@ class WebSocketEncoderTest : public testing::Test {
|
|
|
| void SetUp() override {
|
| std::string response_extensions;
|
| - server_.reset(WebSocketEncoder::CreateServer("", &response_extensions));
|
| + server_ = WebSocketEncoder::CreateServer();
|
| EXPECT_EQ(std::string(), response_extensions);
|
| client_.reset(WebSocketEncoder::CreateClient(""));
|
| }
|
| @@ -50,17 +93,31 @@ class WebSocketEncoderCompressionTest : public WebSocketEncoderTest {
|
| WebSocketEncoderCompressionTest() : WebSocketEncoderTest() {}
|
|
|
| void SetUp() override {
|
| - std::string response_extensions;
|
| - server_.reset(WebSocketEncoder::CreateServer(
|
| - "permessage-deflate; client_max_window_bits", &response_extensions));
|
| - EXPECT_EQ(
|
| - "permessage-deflate; server_max_window_bits=15; "
|
| - "client_max_window_bits=15",
|
| - response_extensions);
|
| - client_.reset(WebSocketEncoder::CreateClient(response_extensions));
|
| + WebSocketDeflateParameters params;
|
| + std::string failure_message;
|
| + server_ = WebSocketEncoder::CreateServer(
|
| + "permessage-deflate; client_max_window_bits", ¶ms,
|
| + &failure_message);
|
| + ASSERT_TRUE(server_);
|
| +
|
| + EXPECT_EQ("permessage-deflate; client_max_window_bits=8",
|
| + params.AsExtension().ToString());
|
| + client_.reset(
|
| + WebSocketEncoder::CreateClient(params.AsExtension().ToString()));
|
| }
|
| };
|
|
|
| +TEST_F(WebSocketEncoderTest, DeflateDisabledEncoder) {
|
| + scoped_ptr<WebSocketEncoder> server(WebSocketEncoder::CreateServer());
|
| + scoped_ptr<WebSocketEncoder> client(WebSocketEncoder::CreateClient(""));
|
| +
|
| + ASSERT_TRUE(server);
|
| + ASSERT_TRUE(client);
|
| +
|
| + EXPECT_FALSE(server->deflate_enabled());
|
| + EXPECT_FALSE(client->deflate_enabled());
|
| +}
|
| +
|
| TEST_F(WebSocketEncoderTest, ClientToServer) {
|
| std::string frame("ClientToServer");
|
| int mask = 123456;
|
|
|