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..c7d94446faa27649c873928e416b96b9a9c0ae3f 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); |
+ |
+ 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=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; |