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-06-01 03:11:16 +0000
committerukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-01 03:11:16 +0000
commit3985966ad82dc8ac7094698bc1e598a6d072c93e (patch)
treec5e22e38883a3d7ba8eb0708d959f5e64cffb70b /net/websockets/websocket_job_unittest.cc
parent1bdaa60c309250932259402cc8abe0a1bb3f5b2d (diff)
downloadchromium_src-3985966ad82dc8ac7094698bc1e598a6d072c93e.zip
chromium_src-3985966ad82dc8ac7094698bc1e598a6d072c93e.tar.gz
chromium_src-3985966ad82dc8ac7094698bc1e598a6d072c93e.tar.bz2
Factor out WebSocket frame handler out of WebSocketJob.
WebSocket frame handler might be used to count number of frames, variance of type or length of frame. It might be also used to compress/decompress message in websocket frame. BUG=none TEST=none Review URL: http://codereview.chromium.org/2078002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48615 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/websockets/websocket_job_unittest.cc')
-rw-r--r--net/websockets/websocket_job_unittest.cc175
1 files changed, 71 insertions, 104 deletions
diff --git a/net/websockets/websocket_job_unittest.cc b/net/websockets/websocket_job_unittest.cc
index cadadc1..0ec760c 100644
--- a/net/websockets/websocket_job_unittest.cc
+++ b/net/websockets/websocket_job_unittest.cc
@@ -249,12 +249,15 @@ TEST_F(WebSocketJobTest, SimpleHandshake) {
static const char* kHandshakeRequestMessage =
"GET /demo HTTP/1.1\r\n"
- "Upgrade: WebSocket\r\n"
- "Connection: Upgrade\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"
- "WebSocket-Protocol: sample\r\n"
- "\r\n";
+ "\r\n"
+ "^n:ds[4U";
bool sent = websocket_->SendData(kHandshakeRequestMessage,
strlen(kHandshakeRequestMessage));
@@ -266,13 +269,14 @@ TEST_F(WebSocketJobTest, SimpleHandshake) {
EXPECT_EQ(strlen(kHandshakeRequestMessage), delegate.amount_sent());
const char kHandshakeResponseMessage[] =
- "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
+ "HTTP/1.1 101 WebSocket Protocol Handshake\r\n"
"Upgrade: WebSocket\r\n"
"Connection: Upgrade\r\n"
- "WebSocket-Origin: http://example.com\r\n"
- "WebSocket-Location: ws://example.com/demo\r\n"
- "WebSocket-Protocol: sample\r\n"
- "\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,
@@ -283,7 +287,7 @@ TEST_F(WebSocketJobTest, SimpleHandshake) {
CloseWebSocketJob();
}
-TEST_F(WebSocketJobTest, SimpleHandshakeDraft76) {
+TEST_F(WebSocketJobTest, SlowHandshake) {
GURL url("ws://example.com/demo");
MockSocketStreamDelegate delegate;
InitWebSocketJob(url, &delegate);
@@ -303,6 +307,8 @@ TEST_F(WebSocketJobTest, SimpleHandshakeDraft76) {
bool sent = websocket_->SendData(kHandshakeRequestMessage,
strlen(kHandshakeRequestMessage));
EXPECT_EQ(true, sent);
+ // We assume request is sent in one data chunk (from WebKit)
+ // We don't support streaming request.
MessageLoop::current()->RunAllPending();
EXPECT_EQ(kHandshakeRequestMessage, socket_->sent_data());
EXPECT_EQ(WebSocketJob::CONNECTING, GetWebSocketJobState());
@@ -319,65 +325,7 @@ TEST_F(WebSocketJobTest, SimpleHandshakeDraft76) {
"\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;
- InitWebSocketJob(url, &delegate);
-
- static const char* kHandshakeRequestMessage =
- "GET /demo HTTP/1.1\r\n"
- "Upgrade: WebSocket\r\n"
- "Connection: Upgrade\r\n"
- "Host: example.com\r\n"
- "Origin: http://example.com\r\n"
- "WebSocket-Protocol: sample\r\n"
- "\r\n";
std::vector<std::string> lines;
- SplitString(kHandshakeRequestMessage, '\n', &lines);
- for (size_t i = 0; i < lines.size() - 2; i++) {
- std::string line = lines[i] + "\r\n";
- SCOPED_TRACE("Line: " + line);
- bool sent = websocket_->SendData(line.c_str(), line.size());
- EXPECT_EQ(true, sent);
- MessageLoop::current()->RunAllPending();
- EXPECT_TRUE(socket_->sent_data().empty());
- EXPECT_EQ(WebSocketJob::CONNECTING, GetWebSocketJobState());
- }
- bool sent = websocket_->SendData("\r\n", 2);
- EXPECT_EQ(true, sent);
- MessageLoop::current()->RunAllPending();
- EXPECT_EQ(kHandshakeRequestMessage, socket_->sent_data());
- EXPECT_EQ(WebSocketJob::CONNECTING, GetWebSocketJobState());
-
- for (size_t i = 0; i < lines.size() - 2; i++) {
- std::string line = lines[i] + "\r\n";
- SCOPED_TRACE("Line: " + line);
- websocket_->OnSentData(socket_.get(), line.size());
- EXPECT_EQ(0U, delegate.amount_sent());
- }
- websocket_->OnSentData(socket_.get(), 2); // \r\n
- EXPECT_EQ(strlen(kHandshakeRequestMessage), delegate.amount_sent());
- EXPECT_EQ(WebSocketJob::CONNECTING, GetWebSocketJobState());
-
- const char kHandshakeResponseMessage[] =
- "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
- "Upgrade: WebSocket\r\n"
- "Connection: Upgrade\r\n"
- "WebSocket-Origin: http://example.com\r\n"
- "WebSocket-Location: ws://example.com/demo\r\n"
- "WebSocket-Protocol: sample\r\n"
- "\r\n";
-
- lines.clear();
SplitString(kHandshakeResponseMessage, '\n', &lines);
for (size_t i = 0; i < lines.size() - 2; i++) {
std::string line = lines[i] + "\r\n";
@@ -391,6 +339,9 @@ TEST_F(WebSocketJobTest, SlowHandshake) {
}
websocket_->OnReceivedData(socket_.get(), "\r\n", 2);
MessageLoop::current()->RunAllPending();
+ EXPECT_TRUE(delegate.received_data().empty());
+ EXPECT_EQ(WebSocketJob::CONNECTING, GetWebSocketJobState());
+ websocket_->OnReceivedData(socket_.get(), "8jKS'y:G*Co,Wxa-", 16);
EXPECT_EQ(kHandshakeResponseMessage, delegate.received_data());
EXPECT_EQ(WebSocketJob::OPEN, GetWebSocketJobState());
CloseWebSocketJob();
@@ -411,23 +362,29 @@ TEST_F(WebSocketJobTest, HandshakeWithCookie) {
static const char* kHandshakeRequestMessage =
"GET /demo HTTP/1.1\r\n"
- "Upgrade: WebSocket\r\n"
- "Connection: Upgrade\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"
- "WebSocket-Protocol: sample\r\n"
"Cookie: WK-test=1\r\n"
- "\r\n";
+ "\r\n"
+ "^n:ds[4U";
static const char* kHandshakeRequestExpected =
"GET /demo HTTP/1.1\r\n"
- "Upgrade: WebSocket\r\n"
- "Connection: Upgrade\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"
- "WebSocket-Protocol: sample\r\n"
"Cookie: CR-test=1; CR-test-httponly=1\r\n"
- "\r\n";
+ "\r\n"
+ "^n:ds[4U";
bool sent = websocket_->SendData(kHandshakeRequestMessage,
strlen(kHandshakeRequestMessage));
@@ -439,23 +396,25 @@ TEST_F(WebSocketJobTest, HandshakeWithCookie) {
EXPECT_EQ(strlen(kHandshakeRequestMessage), delegate.amount_sent());
const char kHandshakeResponseMessage[] =
- "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
+ "HTTP/1.1 101 WebSocket Protocol Handshake\r\n"
"Upgrade: WebSocket\r\n"
"Connection: Upgrade\r\n"
- "WebSocket-Origin: http://example.com\r\n"
- "WebSocket-Location: ws://example.com/demo\r\n"
- "WebSocket-Protocol: sample\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"
"Set-Cookie: CR-set-test=1\r\n"
- "\r\n";
+ "\r\n"
+ "8jKS'y:G*Co,Wxa-";
static const char* kHandshakeResponseExpected =
- "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
+ "HTTP/1.1 101 WebSocket Protocol Handshake\r\n"
"Upgrade: WebSocket\r\n"
"Connection: Upgrade\r\n"
- "WebSocket-Origin: http://example.com\r\n"
- "WebSocket-Location: ws://example.com/demo\r\n"
- "WebSocket-Protocol: sample\r\n"
- "\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,
@@ -491,22 +450,28 @@ TEST_F(WebSocketJobTest, HandshakeWithCookieButNotAllowed) {
static const char* kHandshakeRequestMessage =
"GET /demo HTTP/1.1\r\n"
- "Upgrade: WebSocket\r\n"
- "Connection: Upgrade\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"
- "WebSocket-Protocol: sample\r\n"
"Cookie: WK-test=1\r\n"
- "\r\n";
+ "\r\n"
+ "^n:ds[4U";
static const char* kHandshakeRequestExpected =
"GET /demo HTTP/1.1\r\n"
- "Upgrade: WebSocket\r\n"
- "Connection: Upgrade\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"
- "WebSocket-Protocol: sample\r\n"
- "\r\n";
+ "\r\n"
+ "^n:ds[4U";
bool sent = websocket_->SendData(kHandshakeRequestMessage,
strlen(kHandshakeRequestMessage));
@@ -518,23 +483,25 @@ TEST_F(WebSocketJobTest, HandshakeWithCookieButNotAllowed) {
EXPECT_EQ(strlen(kHandshakeRequestMessage), delegate.amount_sent());
const char kHandshakeResponseMessage[] =
- "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
+ "HTTP/1.1 101 WebSocket Protocol Handshake\r\n"
"Upgrade: WebSocket\r\n"
"Connection: Upgrade\r\n"
- "WebSocket-Origin: http://example.com\r\n"
- "WebSocket-Location: ws://example.com/demo\r\n"
- "WebSocket-Protocol: sample\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"
"Set-Cookie: CR-set-test=1\r\n"
- "\r\n";
+ "\r\n"
+ "8jKS'y:G*Co,Wxa-";
static const char* kHandshakeResponseExpected =
- "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
+ "HTTP/1.1 101 WebSocket Protocol Handshake\r\n"
"Upgrade: WebSocket\r\n"
"Connection: Upgrade\r\n"
- "WebSocket-Origin: http://example.com\r\n"
- "WebSocket-Location: ws://example.com/demo\r\n"
- "WebSocket-Protocol: sample\r\n"
- "\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,