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; |