Index: net/websockets/websocket_handshake_handler_test.cc |
diff --git a/net/websockets/websocket_handshake_handler_test.cc b/net/websockets/websocket_handshake_handler_test.cc |
index e59a982bf16a6e1ac384883ef12d3ac890722b2e..8eff5713258d37ea03a34c724114fa289fa01843 100644 |
--- a/net/websockets/websocket_handshake_handler_test.cc |
+++ b/net/websockets/websocket_handshake_handler_test.cc |
@@ -4,238 +4,14 @@ |
#include "net/websockets/websocket_handshake_handler.h" |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/stringprintf.h" |
-#include "net/http/http_response_headers.h" |
-#include "net/http/http_util.h" |
-#include "url/gurl.h" |
- |
#include "testing/gtest/include/gtest/gtest.h" |
-namespace { |
- |
-const char* const kCookieHeaders[] = { |
- "cookie", "cookie2" |
-}; |
- |
-const char* const kSetCookieHeaders[] = { |
- "set-cookie", "set-cookie2" |
-}; |
- |
-} // namespace |
- |
namespace net { |
-TEST(WebSocketHandshakeRequestHandlerTest, SimpleRequest) { |
- WebSocketHandshakeRequestHandler handler; |
- |
- static const char kHandshakeRequestMessage[] = |
- "GET /demo HTTP/1.1\r\n" |
- "Host: example.com\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n" |
- "Sec-WebSocket-Origin: http://example.com\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "Sec-WebSocket-Version: 13\r\n" |
- "\r\n"; |
- |
- EXPECT_TRUE(handler.ParseRequest(kHandshakeRequestMessage, |
- strlen(kHandshakeRequestMessage))); |
- |
- handler.RemoveHeaders(kCookieHeaders, arraysize(kCookieHeaders)); |
- |
- EXPECT_EQ(kHandshakeRequestMessage, handler.GetRawRequest()); |
-} |
- |
-TEST(WebSocketHandshakeRequestHandlerTest, ReplaceRequestCookies) { |
- WebSocketHandshakeRequestHandler handler; |
- |
- static const char kHandshakeRequestMessage[] = |
- "GET /demo HTTP/1.1\r\n" |
- "Host: example.com\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n" |
- "Sec-WebSocket-Origin: http://example.com\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "Sec-WebSocket-Version: 13\r\n" |
- "Cookie: WK-websocket-test=1\r\n" |
- "\r\n"; |
- |
- EXPECT_TRUE(handler.ParseRequest(kHandshakeRequestMessage, |
- strlen(kHandshakeRequestMessage))); |
- |
- handler.RemoveHeaders(kCookieHeaders, arraysize(kCookieHeaders)); |
- |
- handler.AppendHeaderIfMissing("Cookie", |
- "WK-websocket-test=1; " |
- "WK-websocket-test-httponly=1"); |
- |
- static const char kHandshakeRequestExpectedMessage[] = |
- "GET /demo HTTP/1.1\r\n" |
- "Host: example.com\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n" |
- "Sec-WebSocket-Origin: http://example.com\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "Sec-WebSocket-Version: 13\r\n" |
- "Cookie: WK-websocket-test=1; WK-websocket-test-httponly=1\r\n" |
- "\r\n"; |
- |
- EXPECT_EQ(kHandshakeRequestExpectedMessage, handler.GetRawRequest()); |
-} |
- |
-TEST(WebSocketHandshakeResponseHandlerTest, SimpleResponse) { |
- WebSocketHandshakeResponseHandler handler; |
- |
- static const char kHandshakeResponseMessage[] = |
- "HTTP/1.1 101 Switching Protocols\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "\r\n"; |
- |
- EXPECT_EQ(strlen(kHandshakeResponseMessage), |
- handler.ParseRawResponse(kHandshakeResponseMessage, |
- strlen(kHandshakeResponseMessage))); |
- EXPECT_TRUE(handler.HasResponse()); |
- |
- handler.RemoveHeaders(kCookieHeaders, arraysize(kCookieHeaders)); |
- |
- EXPECT_EQ(kHandshakeResponseMessage, handler.GetResponse()); |
-} |
- |
-TEST(WebSocketHandshakeResponseHandlerTest, ReplaceResponseCookies) { |
- WebSocketHandshakeResponseHandler handler; |
- |
- static const char kHandshakeResponseMessage[] = |
- "HTTP/1.1 101 Switching Protocols\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "Set-Cookie: WK-websocket-test-1\r\n" |
- "Set-Cookie: WK-websocket-test-httponly=1; HttpOnly\r\n" |
- "\r\n"; |
- |
- EXPECT_EQ(strlen(kHandshakeResponseMessage), |
- handler.ParseRawResponse(kHandshakeResponseMessage, |
- strlen(kHandshakeResponseMessage))); |
- EXPECT_TRUE(handler.HasResponse()); |
- std::vector<std::string> cookies; |
- handler.GetHeaders(kSetCookieHeaders, arraysize(kSetCookieHeaders), &cookies); |
- ASSERT_EQ(2U, cookies.size()); |
- EXPECT_EQ("WK-websocket-test-1", cookies[0]); |
- EXPECT_EQ("WK-websocket-test-httponly=1; HttpOnly", cookies[1]); |
- handler.RemoveHeaders(kSetCookieHeaders, arraysize(kSetCookieHeaders)); |
- |
- static const char kHandshakeResponseExpectedMessage[] = |
- "HTTP/1.1 101 Switching Protocols\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "\r\n"; |
- |
- EXPECT_EQ(kHandshakeResponseExpectedMessage, handler.GetResponse()); |
-} |
- |
-TEST(WebSocketHandshakeResponseHandlerTest, BadResponse) { |
- WebSocketHandshakeResponseHandler handler; |
- |
- static const char kBadMessage[] = "\n\n\r\net-Location: w"; |
- EXPECT_EQ(2U, handler.ParseRawResponse(kBadMessage, strlen(kBadMessage))); |
- EXPECT_TRUE(handler.HasResponse()); |
- EXPECT_EQ("\n\n", handler.GetResponse()); |
-} |
- |
-TEST(WebSocketHandshakeResponseHandlerTest, BadResponse2) { |
- WebSocketHandshakeResponseHandler handler; |
- |
- static const char kBadMessage[] = "\n\r\n\r\net-Location: w"; |
- EXPECT_EQ(3U, handler.ParseRawResponse(kBadMessage, strlen(kBadMessage))); |
- EXPECT_TRUE(handler.HasResponse()); |
- EXPECT_EQ("\n\r\n", handler.GetResponse()); |
-} |
- |
-TEST(WebSocketHandshakeHandlerTest, HttpRequestResponse) { |
- WebSocketHandshakeRequestHandler request_handler; |
- |
- static const char kHandshakeRequestMessage[] = |
- "GET /demo HTTP/1.1\r\n" |
- "Host: example.com\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n" |
- "Sec-WebSocket-Origin: http://example.com\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "Sec-WebSocket-Version: 13\r\n" |
- "\r\n"; |
- |
- EXPECT_TRUE(request_handler.ParseRequest(kHandshakeRequestMessage, |
- strlen(kHandshakeRequestMessage))); |
- |
- GURL url("ws://example.com/demo"); |
- std::string challenge; |
- const HttpRequestInfo& request_info = |
- request_handler.GetRequestInfo(url, &challenge); |
- |
- EXPECT_EQ(url, request_info.url); |
- EXPECT_EQ("GET", request_info.method); |
- EXPECT_FALSE(request_info.extra_headers.HasHeader("Upgrade")); |
- EXPECT_FALSE(request_info.extra_headers.HasHeader("Connection")); |
- EXPECT_FALSE(request_info.extra_headers.HasHeader("Sec-WebSocket-Key")); |
- std::string value; |
- EXPECT_TRUE(request_info.extra_headers.GetHeader("Host", &value)); |
- EXPECT_EQ("example.com", value); |
- EXPECT_TRUE(request_info.extra_headers.GetHeader("Sec-WebSocket-Origin", |
- &value)); |
- EXPECT_EQ("http://example.com", value); |
- EXPECT_TRUE(request_info.extra_headers.GetHeader("Sec-WebSocket-Protocol", |
- &value)); |
- EXPECT_EQ("sample", value); |
- |
- EXPECT_EQ("dGhlIHNhbXBsZSBub25jZQ==", challenge); |
- |
- static const char kHandshakeResponseHeader[] = |
- "HTTP/1.1 101 Switching Protocols\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n"; |
- |
- std::string raw_headers = |
- HttpUtil::AssembleRawHeaders(kHandshakeResponseHeader, |
- strlen(kHandshakeResponseHeader)); |
- HttpResponseInfo response_info; |
- response_info.headers = new HttpResponseHeaders(raw_headers); |
- |
- EXPECT_TRUE(StartsWithASCII(response_info.headers->GetStatusLine(), |
- "HTTP/1.1 101 ", false)); |
- EXPECT_FALSE(response_info.headers->HasHeader("Upgrade")); |
- EXPECT_FALSE(response_info.headers->HasHeader("Connection")); |
- EXPECT_FALSE(response_info.headers->HasHeader("Sec-WebSocket-Accept")); |
- EXPECT_TRUE(response_info.headers->HasHeaderValue("Sec-WebSocket-Protocol", |
- "sample")); |
- |
- WebSocketHandshakeResponseHandler response_handler; |
- |
- EXPECT_TRUE(response_handler.ParseResponseInfo(response_info, challenge)); |
- EXPECT_TRUE(response_handler.HasResponse()); |
+namespace { |
- static const char kHandshakeResponseExpectedMessage[] = |
- "HTTP/1.1 101 Switching Protocols\r\n" |
- "Upgrade: websocket\r\n" |
- "Connection: Upgrade\r\n" |
- "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n" |
- "Sec-WebSocket-Protocol: sample\r\n" |
- "\r\n"; |
+// TODO(ricea): Put a test for ComputeSecWebSocketAccept() here. |
- EXPECT_EQ(kHandshakeResponseExpectedMessage, response_handler.GetResponse()); |
-} |
+} // namespace |
} // namespace net |