Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(965)

Side by Side Diff: net/websockets/websocket_stream_test.cc

Issue 1324113002: Introduce WebSocketDeflateParameters. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/websockets/websocket_extension.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/websockets/websocket_stream.h" 5 #include "net/websockets/websocket_stream.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 CreateAndConnectWithExtensions( 556 CreateAndConnectWithExtensions(
557 "permessage-deflate, permessage-deflate; client_max_window_bits=10"); 557 "permessage-deflate, permessage-deflate; client_max_window_bits=10");
558 EXPECT_FALSE(stream_); 558 EXPECT_FALSE(stream_);
559 EXPECT_TRUE(has_failed()); 559 EXPECT_TRUE(has_failed());
560 EXPECT_EQ( 560 EXPECT_EQ(
561 "Error during WebSocket handshake: " 561 "Error during WebSocket handshake: "
562 "Received duplicate permessage-deflate response", 562 "Received duplicate permessage-deflate response",
563 failure_message()); 563 failure_message());
564 } 564 }
565 565
566 // permessage-deflate parameters may not be duplicated. 566 // client_max_window_bits must have an argument
567 TEST_F(WebSocketStreamCreateExtensionTest, NoDuplicateParameters) {
568 CreateAndConnectWithExtensions(
569 "permessage-deflate; client_no_context_takeover; "
570 "client_no_context_takeover");
571 EXPECT_FALSE(stream_);
572 EXPECT_TRUE(has_failed());
573 EXPECT_EQ(
574 "Error during WebSocket handshake: Error in permessage-deflate: "
575 "Received duplicate permessage-deflate extension parameter "
576 "client_no_context_takeover",
577 failure_message());
578 }
579
580 // permessage-deflate parameters must start with "client_" or "server_"
581 TEST_F(WebSocketStreamCreateExtensionTest, BadParameterPrefix) {
582 CreateAndConnectWithExtensions(
583 "permessage-deflate; absurd_no_context_takeover");
584 EXPECT_FALSE(stream_);
585 EXPECT_TRUE(has_failed());
586 EXPECT_EQ(
587 "Error during WebSocket handshake: Error in permessage-deflate: "
588 "Received an unexpected permessage-deflate extension parameter",
589 failure_message());
590 }
591
592 // permessage-deflate parameters must be either *_no_context_takeover or
593 // *_max_window_bits
594 TEST_F(WebSocketStreamCreateExtensionTest, BadParameterSuffix) {
595 CreateAndConnectWithExtensions(
596 "permessage-deflate; client_max_content_bits=5");
597 EXPECT_FALSE(stream_);
598 EXPECT_TRUE(has_failed());
599 EXPECT_EQ(
600 "Error during WebSocket handshake: Error in permessage-deflate: "
601 "Received an unexpected permessage-deflate extension parameter",
602 failure_message());
603 }
604
605 // *_no_context_takeover parameters must not have an argument
606 TEST_F(WebSocketStreamCreateExtensionTest, BadParameterValue) {
607 CreateAndConnectWithExtensions(
608 "permessage-deflate; client_no_context_takeover=true");
609 EXPECT_FALSE(stream_);
610 EXPECT_TRUE(has_failed());
611 EXPECT_EQ(
612 "Error during WebSocket handshake: Error in permessage-deflate: "
613 "Received invalid client_no_context_takeover parameter",
614 failure_message());
615 }
616
617 // *_max_window_bits must have an argument
618 TEST_F(WebSocketStreamCreateExtensionTest, NoMaxWindowBitsArgument) { 567 TEST_F(WebSocketStreamCreateExtensionTest, NoMaxWindowBitsArgument) {
619 CreateAndConnectWithExtensions("permessage-deflate; client_max_window_bits"); 568 CreateAndConnectWithExtensions("permessage-deflate; client_max_window_bits");
620 EXPECT_FALSE(stream_); 569 EXPECT_FALSE(stream_);
621 EXPECT_TRUE(has_failed()); 570 EXPECT_TRUE(has_failed());
622 EXPECT_EQ( 571 EXPECT_EQ(
623 "Error during WebSocket handshake: Error in permessage-deflate: " 572 "Error during WebSocket handshake: Error in permessage-deflate: "
624 "client_max_window_bits must have value", 573 "client_max_window_bits must have value",
625 failure_message()); 574 failure_message());
626 } 575 }
627 576
628 // *_max_window_bits must be an integer 577 // Other cases for permessage-deflate parameters are tested in
629 TEST_F(WebSocketStreamCreateExtensionTest, MaxWindowBitsValueInteger) { 578 // websocket_deflate_parameters_test.cc.
630 CreateAndConnectWithExtensions(
631 "permessage-deflate; server_max_window_bits=banana");
632 EXPECT_FALSE(stream_);
633 EXPECT_TRUE(has_failed());
634 EXPECT_EQ(
635 "Error during WebSocket handshake: Error in permessage-deflate: "
636 "Received invalid server_max_window_bits parameter",
637 failure_message());
638 }
639
640 // *_max_window_bits must be >= 8
641 TEST_F(WebSocketStreamCreateExtensionTest, MaxWindowBitsValueTooSmall) {
642 CreateAndConnectWithExtensions(
643 "permessage-deflate; server_max_window_bits=7");
644 EXPECT_FALSE(stream_);
645 EXPECT_TRUE(has_failed());
646 EXPECT_EQ(
647 "Error during WebSocket handshake: Error in permessage-deflate: "
648 "Received invalid server_max_window_bits parameter",
649 failure_message());
650 }
651
652 // *_max_window_bits must be <= 15
653 TEST_F(WebSocketStreamCreateExtensionTest, MaxWindowBitsValueTooBig) {
654 CreateAndConnectWithExtensions(
655 "permessage-deflate; client_max_window_bits=16");
656 EXPECT_FALSE(stream_);
657 EXPECT_TRUE(has_failed());
658 EXPECT_EQ(
659 "Error during WebSocket handshake: Error in permessage-deflate: "
660 "Received invalid client_max_window_bits parameter",
661 failure_message());
662 }
663
664 // *_max_window_bits must not start with 0
665 TEST_F(WebSocketStreamCreateExtensionTest, MaxWindowBitsValueStartsWithZero) {
666 CreateAndConnectWithExtensions(
667 "permessage-deflate; client_max_window_bits=08");
668 EXPECT_FALSE(stream_);
669 EXPECT_TRUE(has_failed());
670 EXPECT_EQ(
671 "Error during WebSocket handshake: Error in permessage-deflate: "
672 "Received invalid client_max_window_bits parameter",
673 failure_message());
674 }
675
676 // *_max_window_bits must not start with +
677 TEST_F(WebSocketStreamCreateExtensionTest, MaxWindowBitsValueStartsWithPlus) {
678 CreateAndConnectWithExtensions(
679 "permessage-deflate; server_max_window_bits=+9");
680 EXPECT_FALSE(stream_);
681 EXPECT_TRUE(has_failed());
682 EXPECT_EQ(
683 "Error during WebSocket handshake: Error in permessage-deflate: "
684 "Received invalid server_max_window_bits parameter",
685 failure_message());
686 }
687 579
688 // TODO(ricea): Check that WebSocketDeflateStream is initialised with the 580 // TODO(ricea): Check that WebSocketDeflateStream is initialised with the
689 // arguments from the server. This is difficult because the data written to the 581 // arguments from the server. This is difficult because the data written to the
690 // socket is randomly masked. 582 // socket is randomly masked.
691 583
692 // Additional Sec-WebSocket-Accept headers should be rejected. 584 // Additional Sec-WebSocket-Accept headers should be rejected.
693 TEST_F(WebSocketStreamCreateTest, DoubleAccept) { 585 TEST_F(WebSocketStreamCreateTest, DoubleAccept) {
694 CreateAndConnectStandard( 586 CreateAndConnectStandard(
695 "ws://localhost/", "localhost", "/", NoSubProtocols(), LocalhostOrigin(), 587 "ws://localhost/", "localhost", "/", NoSubProtocols(), LocalhostOrigin(),
696 "", "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n"); 588 "", "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n");
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 CreateAndConnectRawExpectations("ws://localhost/", NoSubProtocols(), 1188 CreateAndConnectRawExpectations("ws://localhost/", NoSubProtocols(),
1297 LocalhostOrigin(), socket_data.Pass()); 1189 LocalhostOrigin(), socket_data.Pass());
1298 WaitUntilConnectDone(); 1190 WaitUntilConnectDone();
1299 EXPECT_TRUE(has_failed()); 1191 EXPECT_TRUE(has_failed());
1300 EXPECT_EQ("Establishing a tunnel via proxy server failed.", 1192 EXPECT_EQ("Establishing a tunnel via proxy server failed.",
1301 failure_message()); 1193 failure_message());
1302 } 1194 }
1303 1195
1304 } // namespace 1196 } // namespace
1305 } // namespace net 1197 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_extension.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698