Chromium Code Reviews| 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..91a2eadcccbe9599ecb8c8c123594180b1ecfa63 100644 |
| --- a/net/server/web_socket_encoder_unittest.cc |
| +++ b/net/server/web_socket_encoder_unittest.cc |
| @@ -3,30 +3,74 @@ |
| // 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; |
| + auto server = WebSocketEncoder::CreateServer("", ¶ms); |
|
davidben
2015/09/22 19:44:01
Using auto with smart pointers seems a bad idea, s
yhirano
2015/09/28 03:17:06
Done.
|
| + |
| + EXPECT_FALSE(server); |
| +} |
| + |
| TEST(WebSocketEncoderHandshakeTest, |
| CreateServerWithoutClientMaxWindowBitsParameter) { |
| - std::string response_extensions; |
| - 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); |
| + WebSocketDeflateParameters params; |
| + auto server = WebSocketEncoder::CreateServer("permessage-deflate", ¶ms); |
| + |
| + ASSERT_TRUE(server); |
| + EXPECT_TRUE(server->deflate_enabled()); |
| + EXPECT_EQ("permessage-deflate", params.AsExtension().ToString()); |
| } |
| TEST(WebSocketEncoderHandshakeTest, |
| CreateServerWithServerNoContextTakeoverParameter) { |
| - std::string response_extensions; |
| - 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); |
| + WebSocketDeflateParameters params; |
| + auto server = WebSocketEncoder::CreateServer( |
| + "permessage-deflate; server_no_context_takeover", ¶ms); |
| + ASSERT_TRUE(server); |
| + EXPECT_TRUE(server->deflate_enabled()); |
| + EXPECT_EQ("permessage-deflate; server_no_context_takeover", |
| + params.AsExtension().ToString()); |
| +} |
| + |
| +TEST(WebSocketEncoderHandshakeTest, FirstExtensionShouldBeChosen) { |
| + WebSocketDeflateParameters params; |
| + auto server = WebSocketEncoder::CreateServer( |
| + "permessage-deflate; server_no_context_takeover," |
| + "permessage-deflate; server_max_window_bits=15", |
| + ¶ms); |
| + |
| + ASSERT_TRUE(server); |
| + EXPECT_TRUE(server->deflate_enabled()); |
| + EXPECT_EQ("permessage-deflate; server_no_context_takeover", |
| + params.AsExtension().ToString()); |
| +} |
| + |
| +TEST(WebSocketEncoderHandshakeTest, FirstValidExtensionShouldBeChosen) { |
| + WebSocketDeflateParameters params; |
| + auto server = WebSocketEncoder::CreateServer( |
| + "permessage-deflate; Xserver_no_context_takeover," |
| + "permessage-deflate; server_max_window_bits=15", |
| + ¶ms); |
| + |
| + ASSERT_TRUE(server); |
| + EXPECT_TRUE(server->deflate_enabled()); |
| + EXPECT_EQ("permessage-deflate; server_max_window_bits=15", |
| + params.AsExtension().ToString()); |
| +} |
| + |
| +TEST(WebSocketEncoderHandshakeTest, AllExtensionsAreUnknownOrMalformed) { |
| + WebSocketDeflateParameters params; |
| + auto server = |
| + WebSocketEncoder::CreateServer("unknown, permessage-deflate; x", ¶ms); |
| + |
| + ASSERT_TRUE(server); |
| + EXPECT_FALSE(server->deflate_enabled()); |
| } |
| class WebSocketEncoderTest : public testing::Test { |
| @@ -35,7 +79,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 +94,29 @@ 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; |
| + server_ = WebSocketEncoder::CreateServer( |
| + "permessage-deflate; client_max_window_bits", ¶ms); |
| + ASSERT_TRUE(server_); |
| + EXPECT_TRUE(server_->deflate_enabled()); |
| + EXPECT_EQ("permessage-deflate; client_max_window_bits=15", |
| + 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; |