summaryrefslogtreecommitdiffstats
path: root/net/websockets/websocket_job_unittest.cc
diff options
context:
space:
mode:
authorukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-30 04:16:52 +0000
committerukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-30 04:16:52 +0000
commitf8037742c8e716892f9bf0f854b3ebb5680b7076 (patch)
tree1593fbc65b296f21422be3eea3b810c525cb697c /net/websockets/websocket_job_unittest.cc
parentf5d01f28f7303a06df34324e0549e6d591c5088e (diff)
downloadchromium_src-f8037742c8e716892f9bf0f854b3ebb5680b7076.zip
chromium_src-f8037742c8e716892f9bf0f854b3ebb5680b7076.tar.gz
chromium_src-f8037742c8e716892f9bf0f854b3ebb5680b7076.tar.bz2
Fix WebSocketJob to pass /key_3/ after handshake request header.
BUG=none TEST=WebSocketJob::SimpleHandshakeDraft76 passes Review URL: http://codereview.chromium.org/1256001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43054 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/websockets/websocket_job_unittest.cc')
-rw-r--r--net/websockets/websocket_job_unittest.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/net/websockets/websocket_job_unittest.cc b/net/websockets/websocket_job_unittest.cc
index 8a32be0..cadadc1 100644
--- a/net/websockets/websocket_job_unittest.cc
+++ b/net/websockets/websocket_job_unittest.cc
@@ -283,6 +283,51 @@ TEST_F(WebSocketJobTest, SimpleHandshake) {
CloseWebSocketJob();
}
+TEST_F(WebSocketJobTest, SimpleHandshakeDraft76) {
+ GURL url("ws://example.com/demo");
+ MockSocketStreamDelegate delegate;
+ InitWebSocketJob(url, &delegate);
+
+ static const char* kHandshakeRequestMessage =
+ "GET /demo HTTP/1.1\r\n"
+ "Host: example.com\r\n"
+ "Connection: Upgrade\r\n"
+ "Sec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\n"
+ "Sec-WebSocket-Protocol: sample\r\n"
+ "Upgrade: WebSocket\r\n"
+ "Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\n"
+ "Origin: http://example.com\r\n"
+ "\r\n"
+ "^n:ds[4U";
+
+ bool sent = websocket_->SendData(kHandshakeRequestMessage,
+ strlen(kHandshakeRequestMessage));
+ EXPECT_EQ(true, sent);
+ MessageLoop::current()->RunAllPending();
+ EXPECT_EQ(kHandshakeRequestMessage, socket_->sent_data());
+ EXPECT_EQ(WebSocketJob::CONNECTING, GetWebSocketJobState());
+ websocket_->OnSentData(socket_.get(), strlen(kHandshakeRequestMessage));
+ EXPECT_EQ(strlen(kHandshakeRequestMessage), delegate.amount_sent());
+
+ const char kHandshakeResponseMessage[] =
+ "HTTP/1.1 101 WebSocket Protocol Handshake\r\n"
+ "Upgrade: WebSocket\r\n"
+ "Connection: Upgrade\r\n"
+ "Sec-WebSocket-Origin: http://example.com\r\n"
+ "Sec-WebSocket-Location: ws://example.com/demo\r\n"
+ "Sec-WebSocket-Protocol: sample\r\n"
+ "\r\n"
+ "8jKS'y:G*Co,Wxa-";
+
+ websocket_->OnReceivedData(socket_.get(),
+ kHandshakeResponseMessage,
+ strlen(kHandshakeResponseMessage));
+ MessageLoop::current()->RunAllPending();
+ EXPECT_EQ(kHandshakeResponseMessage, delegate.received_data());
+ EXPECT_EQ(WebSocketJob::OPEN, GetWebSocketJobState());
+ CloseWebSocketJob();
+}
+
TEST_F(WebSocketJobTest, SlowHandshake) {
GURL url("ws://example.com/demo");
MockSocketStreamDelegate delegate;