| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/server/web_socket_encoder.h" | 5 #include "net/server/web_socket_encoder.h" |
| 6 | 6 |
| 7 #include "net/websockets/websocket_deflate_parameters.h" | 7 #include "net/websockets/websocket_deflate_parameters.h" |
| 8 #include "net/websockets/websocket_extension.h" | 8 #include "net/websockets/websocket_extension.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| 11 namespace net { | 11 namespace net { |
| 12 | 12 |
| 13 TEST(WebSocketEncoderHandshakeTest, EmptyRequestShouldBeRejected) { | 13 TEST(WebSocketEncoderHandshakeTest, EmptyRequestShouldBeRejected) { |
| 14 WebSocketDeflateParameters params; | 14 WebSocketDeflateParameters params; |
| 15 scoped_ptr<WebSocketEncoder> server = | 15 std::unique_ptr<WebSocketEncoder> server = |
| 16 WebSocketEncoder::CreateServer("", ¶ms); | 16 WebSocketEncoder::CreateServer("", ¶ms); |
| 17 | 17 |
| 18 EXPECT_FALSE(server); | 18 EXPECT_FALSE(server); |
| 19 } | 19 } |
| 20 | 20 |
| 21 TEST(WebSocketEncoderHandshakeTest, | 21 TEST(WebSocketEncoderHandshakeTest, |
| 22 CreateServerWithoutClientMaxWindowBitsParameter) { | 22 CreateServerWithoutClientMaxWindowBitsParameter) { |
| 23 WebSocketDeflateParameters params; | 23 WebSocketDeflateParameters params; |
| 24 scoped_ptr<WebSocketEncoder> server = | 24 std::unique_ptr<WebSocketEncoder> server = |
| 25 WebSocketEncoder::CreateServer("permessage-deflate", ¶ms); | 25 WebSocketEncoder::CreateServer("permessage-deflate", ¶ms); |
| 26 | 26 |
| 27 ASSERT_TRUE(server); | 27 ASSERT_TRUE(server); |
| 28 EXPECT_TRUE(server->deflate_enabled()); | 28 EXPECT_TRUE(server->deflate_enabled()); |
| 29 EXPECT_EQ("permessage-deflate", params.AsExtension().ToString()); | 29 EXPECT_EQ("permessage-deflate", params.AsExtension().ToString()); |
| 30 } | 30 } |
| 31 | 31 |
| 32 TEST(WebSocketEncoderHandshakeTest, | 32 TEST(WebSocketEncoderHandshakeTest, |
| 33 CreateServerWithServerNoContextTakeoverParameter) { | 33 CreateServerWithServerNoContextTakeoverParameter) { |
| 34 WebSocketDeflateParameters params; | 34 WebSocketDeflateParameters params; |
| 35 scoped_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer( | 35 std::unique_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer( |
| 36 "permessage-deflate; server_no_context_takeover", ¶ms); | 36 "permessage-deflate; server_no_context_takeover", ¶ms); |
| 37 ASSERT_TRUE(server); | 37 ASSERT_TRUE(server); |
| 38 EXPECT_TRUE(server->deflate_enabled()); | 38 EXPECT_TRUE(server->deflate_enabled()); |
| 39 EXPECT_EQ("permessage-deflate; server_no_context_takeover", | 39 EXPECT_EQ("permessage-deflate; server_no_context_takeover", |
| 40 params.AsExtension().ToString()); | 40 params.AsExtension().ToString()); |
| 41 } | 41 } |
| 42 | 42 |
| 43 TEST(WebSocketEncoderHandshakeTest, FirstExtensionShouldBeChosen) { | 43 TEST(WebSocketEncoderHandshakeTest, FirstExtensionShouldBeChosen) { |
| 44 WebSocketDeflateParameters params; | 44 WebSocketDeflateParameters params; |
| 45 scoped_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer( | 45 std::unique_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer( |
| 46 "permessage-deflate; server_no_context_takeover," | 46 "permessage-deflate; server_no_context_takeover," |
| 47 "permessage-deflate; server_max_window_bits=15", | 47 "permessage-deflate; server_max_window_bits=15", |
| 48 ¶ms); | 48 ¶ms); |
| 49 | 49 |
| 50 ASSERT_TRUE(server); | 50 ASSERT_TRUE(server); |
| 51 EXPECT_TRUE(server->deflate_enabled()); | 51 EXPECT_TRUE(server->deflate_enabled()); |
| 52 EXPECT_EQ("permessage-deflate; server_no_context_takeover", | 52 EXPECT_EQ("permessage-deflate; server_no_context_takeover", |
| 53 params.AsExtension().ToString()); | 53 params.AsExtension().ToString()); |
| 54 } | 54 } |
| 55 | 55 |
| 56 TEST(WebSocketEncoderHandshakeTest, FirstValidExtensionShouldBeChosen) { | 56 TEST(WebSocketEncoderHandshakeTest, FirstValidExtensionShouldBeChosen) { |
| 57 WebSocketDeflateParameters params; | 57 WebSocketDeflateParameters params; |
| 58 scoped_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer( | 58 std::unique_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer( |
| 59 "permessage-deflate; Xserver_no_context_takeover," | 59 "permessage-deflate; Xserver_no_context_takeover," |
| 60 "permessage-deflate; server_max_window_bits=15", | 60 "permessage-deflate; server_max_window_bits=15", |
| 61 ¶ms); | 61 ¶ms); |
| 62 | 62 |
| 63 ASSERT_TRUE(server); | 63 ASSERT_TRUE(server); |
| 64 EXPECT_TRUE(server->deflate_enabled()); | 64 EXPECT_TRUE(server->deflate_enabled()); |
| 65 EXPECT_EQ("permessage-deflate; server_max_window_bits=15", | 65 EXPECT_EQ("permessage-deflate; server_max_window_bits=15", |
| 66 params.AsExtension().ToString()); | 66 params.AsExtension().ToString()); |
| 67 } | 67 } |
| 68 | 68 |
| 69 TEST(WebSocketEncoderHandshakeTest, AllExtensionsAreUnknownOrMalformed) { | 69 TEST(WebSocketEncoderHandshakeTest, AllExtensionsAreUnknownOrMalformed) { |
| 70 WebSocketDeflateParameters params; | 70 WebSocketDeflateParameters params; |
| 71 scoped_ptr<WebSocketEncoder> server = | 71 std::unique_ptr<WebSocketEncoder> server = |
| 72 WebSocketEncoder::CreateServer("unknown, permessage-deflate; x", ¶ms); | 72 WebSocketEncoder::CreateServer("unknown, permessage-deflate; x", ¶ms); |
| 73 | 73 |
| 74 ASSERT_TRUE(server); | 74 ASSERT_TRUE(server); |
| 75 EXPECT_FALSE(server->deflate_enabled()); | 75 EXPECT_FALSE(server->deflate_enabled()); |
| 76 } | 76 } |
| 77 | 77 |
| 78 class WebSocketEncoderTest : public testing::Test { | 78 class WebSocketEncoderTest : public testing::Test { |
| 79 public: | 79 public: |
| 80 WebSocketEncoderTest() {} | 80 WebSocketEncoderTest() {} |
| 81 | 81 |
| 82 void SetUp() override { | 82 void SetUp() override { |
| 83 std::string response_extensions; | 83 std::string response_extensions; |
| 84 server_ = WebSocketEncoder::CreateServer(); | 84 server_ = WebSocketEncoder::CreateServer(); |
| 85 EXPECT_EQ(std::string(), response_extensions); | 85 EXPECT_EQ(std::string(), response_extensions); |
| 86 client_ = WebSocketEncoder::CreateClient(""); | 86 client_ = WebSocketEncoder::CreateClient(""); |
| 87 } | 87 } |
| 88 | 88 |
| 89 protected: | 89 protected: |
| 90 scoped_ptr<WebSocketEncoder> server_; | 90 std::unique_ptr<WebSocketEncoder> server_; |
| 91 scoped_ptr<WebSocketEncoder> client_; | 91 std::unique_ptr<WebSocketEncoder> client_; |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 class WebSocketEncoderCompressionTest : public WebSocketEncoderTest { | 94 class WebSocketEncoderCompressionTest : public WebSocketEncoderTest { |
| 95 public: | 95 public: |
| 96 WebSocketEncoderCompressionTest() : WebSocketEncoderTest() {} | 96 WebSocketEncoderCompressionTest() : WebSocketEncoderTest() {} |
| 97 | 97 |
| 98 void SetUp() override { | 98 void SetUp() override { |
| 99 WebSocketDeflateParameters params; | 99 WebSocketDeflateParameters params; |
| 100 server_ = WebSocketEncoder::CreateServer( | 100 server_ = WebSocketEncoder::CreateServer( |
| 101 "permessage-deflate; client_max_window_bits", ¶ms); | 101 "permessage-deflate; client_max_window_bits", ¶ms); |
| 102 ASSERT_TRUE(server_); | 102 ASSERT_TRUE(server_); |
| 103 EXPECT_TRUE(server_->deflate_enabled()); | 103 EXPECT_TRUE(server_->deflate_enabled()); |
| 104 EXPECT_EQ("permessage-deflate; client_max_window_bits=15", | 104 EXPECT_EQ("permessage-deflate; client_max_window_bits=15", |
| 105 params.AsExtension().ToString()); | 105 params.AsExtension().ToString()); |
| 106 client_ = WebSocketEncoder::CreateClient(params.AsExtension().ToString()); | 106 client_ = WebSocketEncoder::CreateClient(params.AsExtension().ToString()); |
| 107 } | 107 } |
| 108 }; | 108 }; |
| 109 | 109 |
| 110 TEST_F(WebSocketEncoderTest, DeflateDisabledEncoder) { | 110 TEST_F(WebSocketEncoderTest, DeflateDisabledEncoder) { |
| 111 scoped_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer(); | 111 std::unique_ptr<WebSocketEncoder> server = WebSocketEncoder::CreateServer(); |
| 112 scoped_ptr<WebSocketEncoder> client = WebSocketEncoder::CreateClient(""); | 112 std::unique_ptr<WebSocketEncoder> client = WebSocketEncoder::CreateClient(""); |
| 113 | 113 |
| 114 ASSERT_TRUE(server); | 114 ASSERT_TRUE(server); |
| 115 ASSERT_TRUE(client); | 115 ASSERT_TRUE(client); |
| 116 | 116 |
| 117 EXPECT_FALSE(server->deflate_enabled()); | 117 EXPECT_FALSE(server->deflate_enabled()); |
| 118 EXPECT_FALSE(client->deflate_enabled()); | 118 EXPECT_FALSE(client->deflate_enabled()); |
| 119 } | 119 } |
| 120 | 120 |
| 121 TEST_F(WebSocketEncoderTest, ClientToServer) { | 121 TEST_F(WebSocketEncoderTest, ClientToServer) { |
| 122 std::string frame("ClientToServer"); | 122 std::string frame("ClientToServer"); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 | 225 |
| 226 server_->EncodeFrame(frame, mask, &encoded); | 226 server_->EncodeFrame(frame, mask, &encoded); |
| 227 EXPECT_LT(encoded.length(), frame.length()); | 227 EXPECT_LT(encoded.length(), frame.length()); |
| 228 EXPECT_EQ(WebSocket::FRAME_OK, | 228 EXPECT_EQ(WebSocket::FRAME_OK, |
| 229 client_->DecodeFrame(encoded, &bytes_consumed, &decoded)); | 229 client_->DecodeFrame(encoded, &bytes_consumed, &decoded)); |
| 230 EXPECT_EQ(frame, decoded); | 230 EXPECT_EQ(frame, decoded); |
| 231 EXPECT_EQ((int)encoded.length(), bytes_consumed); | 231 EXPECT_EQ((int)encoded.length(), bytes_consumed); |
| 232 } | 232 } |
| 233 | 233 |
| 234 } // namespace net | 234 } // namespace net |
| OLD | NEW |