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 |