summaryrefslogtreecommitdiffstats
path: root/net/server/web_socket_encoder_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/server/web_socket_encoder_unittest.cc')
-rw-r--r--net/server/web_socket_encoder_unittest.cc104
1 files changed, 81 insertions, 23 deletions
diff --git a/net/server/web_socket_encoder_unittest.cc b/net/server/web_socket_encoder_unittest.cc
index 7bca876..9991bd7 100644
--- a/net/server/web_socket_encoder_unittest.cc
+++ b/net/server/web_socket_encoder_unittest.cc
@@ -3,30 +3,76 @@
// 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;
+ scoped_ptr<WebSocketEncoder> server =
+ WebSocketEncoder::CreateServer("", &params);
+
+ 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;
+ scoped_ptr<WebSocketEncoder> server =
+ WebSocketEncoder::CreateServer("permessage-deflate", &params);
+
+ 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;
+ scoped_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer(
+ "permessage-deflate; server_no_context_takeover", &params);
+ ASSERT_TRUE(server);
+ EXPECT_TRUE(server->deflate_enabled());
+ EXPECT_EQ("permessage-deflate; server_no_context_takeover",
+ params.AsExtension().ToString());
+}
+
+TEST(WebSocketEncoderHandshakeTest, FirstExtensionShouldBeChosen) {
+ WebSocketDeflateParameters params;
+ scoped_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer(
+ "permessage-deflate; server_no_context_takeover,"
+ "permessage-deflate; server_max_window_bits=15",
+ &params);
+
+ ASSERT_TRUE(server);
+ EXPECT_TRUE(server->deflate_enabled());
+ EXPECT_EQ("permessage-deflate; server_no_context_takeover",
+ params.AsExtension().ToString());
+}
+
+TEST(WebSocketEncoderHandshakeTest, FirstValidExtensionShouldBeChosen) {
+ WebSocketDeflateParameters params;
+ scoped_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer(
+ "permessage-deflate; Xserver_no_context_takeover,"
+ "permessage-deflate; server_max_window_bits=15",
+ &params);
+
+ 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;
+ scoped_ptr<WebSocketEncoder> server =
+ WebSocketEncoder::CreateServer("unknown, permessage-deflate; x", &params);
+
+ ASSERT_TRUE(server);
+ EXPECT_FALSE(server->deflate_enabled());
}
class WebSocketEncoderTest : public testing::Test {
@@ -35,7 +81,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 +96,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", &params);
+ 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;