| OLD | NEW |
| 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_handshake_handler.h" | 5 #include "net/websockets/websocket_handshake_handler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
| 12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
| 13 #include "net/http/http_response_headers.h" | 13 #include "net/http/http_response_headers.h" |
| 14 #include "net/http/http_util.h" | 14 #include "net/http/http_util.h" |
| 15 #include "url/gurl.h" | 15 #include "url/gurl.h" |
| 16 | 16 |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 18 |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 const char* const kCookieHeaders[] = { | 21 const char* const kCookieHeaders[] = {"cookie", "cookie2"}; |
| 22 "cookie", "cookie2" | |
| 23 }; | |
| 24 | 22 |
| 25 const char* const kSetCookieHeaders[] = { | 23 const char* const kSetCookieHeaders[] = {"set-cookie", "set-cookie2"}; |
| 26 "set-cookie", "set-cookie2" | |
| 27 }; | |
| 28 | 24 |
| 29 } // namespace | 25 } // namespace |
| 30 | 26 |
| 31 namespace net { | 27 namespace net { |
| 32 | 28 |
| 33 TEST(WebSocketHandshakeRequestHandlerTest, SimpleRequest) { | 29 TEST(WebSocketHandshakeRequestHandlerTest, SimpleRequest) { |
| 34 WebSocketHandshakeRequestHandler handler; | 30 WebSocketHandshakeRequestHandler handler; |
| 35 | 31 |
| 36 static const char kHandshakeRequestMessage[] = | 32 static const char kHandshakeRequestMessage[] = |
| 37 "GET /demo HTTP/1.1\r\n" | 33 "GET /demo HTTP/1.1\r\n" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 request_handler.GetRequestInfo(url, &challenge); | 184 request_handler.GetRequestInfo(url, &challenge); |
| 189 | 185 |
| 190 EXPECT_EQ(url, request_info.url); | 186 EXPECT_EQ(url, request_info.url); |
| 191 EXPECT_EQ("GET", request_info.method); | 187 EXPECT_EQ("GET", request_info.method); |
| 192 EXPECT_FALSE(request_info.extra_headers.HasHeader("Upgrade")); | 188 EXPECT_FALSE(request_info.extra_headers.HasHeader("Upgrade")); |
| 193 EXPECT_FALSE(request_info.extra_headers.HasHeader("Connection")); | 189 EXPECT_FALSE(request_info.extra_headers.HasHeader("Connection")); |
| 194 EXPECT_FALSE(request_info.extra_headers.HasHeader("Sec-WebSocket-Key")); | 190 EXPECT_FALSE(request_info.extra_headers.HasHeader("Sec-WebSocket-Key")); |
| 195 std::string value; | 191 std::string value; |
| 196 EXPECT_TRUE(request_info.extra_headers.GetHeader("Host", &value)); | 192 EXPECT_TRUE(request_info.extra_headers.GetHeader("Host", &value)); |
| 197 EXPECT_EQ("example.com", value); | 193 EXPECT_EQ("example.com", value); |
| 198 EXPECT_TRUE(request_info.extra_headers.GetHeader("Sec-WebSocket-Origin", | 194 EXPECT_TRUE( |
| 199 &value)); | 195 request_info.extra_headers.GetHeader("Sec-WebSocket-Origin", &value)); |
| 200 EXPECT_EQ("http://example.com", value); | 196 EXPECT_EQ("http://example.com", value); |
| 201 EXPECT_TRUE(request_info.extra_headers.GetHeader("Sec-WebSocket-Protocol", | 197 EXPECT_TRUE( |
| 202 &value)); | 198 request_info.extra_headers.GetHeader("Sec-WebSocket-Protocol", &value)); |
| 203 EXPECT_EQ("sample", value); | 199 EXPECT_EQ("sample", value); |
| 204 | 200 |
| 205 EXPECT_EQ("dGhlIHNhbXBsZSBub25jZQ==", challenge); | 201 EXPECT_EQ("dGhlIHNhbXBsZSBub25jZQ==", challenge); |
| 206 | 202 |
| 207 static const char kHandshakeResponseHeader[] = | 203 static const char kHandshakeResponseHeader[] = |
| 208 "HTTP/1.1 101 Switching Protocols\r\n" | 204 "HTTP/1.1 101 Switching Protocols\r\n" |
| 209 "Sec-WebSocket-Protocol: sample\r\n"; | 205 "Sec-WebSocket-Protocol: sample\r\n"; |
| 210 | 206 |
| 211 std::string raw_headers = | 207 std::string raw_headers = HttpUtil::AssembleRawHeaders( |
| 212 HttpUtil::AssembleRawHeaders(kHandshakeResponseHeader, | 208 kHandshakeResponseHeader, strlen(kHandshakeResponseHeader)); |
| 213 strlen(kHandshakeResponseHeader)); | |
| 214 HttpResponseInfo response_info; | 209 HttpResponseInfo response_info; |
| 215 response_info.headers = new HttpResponseHeaders(raw_headers); | 210 response_info.headers = new HttpResponseHeaders(raw_headers); |
| 216 | 211 |
| 217 EXPECT_TRUE(StartsWithASCII(response_info.headers->GetStatusLine(), | 212 EXPECT_TRUE(StartsWithASCII( |
| 218 "HTTP/1.1 101 ", false)); | 213 response_info.headers->GetStatusLine(), "HTTP/1.1 101 ", false)); |
| 219 EXPECT_FALSE(response_info.headers->HasHeader("Upgrade")); | 214 EXPECT_FALSE(response_info.headers->HasHeader("Upgrade")); |
| 220 EXPECT_FALSE(response_info.headers->HasHeader("Connection")); | 215 EXPECT_FALSE(response_info.headers->HasHeader("Connection")); |
| 221 EXPECT_FALSE(response_info.headers->HasHeader("Sec-WebSocket-Accept")); | 216 EXPECT_FALSE(response_info.headers->HasHeader("Sec-WebSocket-Accept")); |
| 222 EXPECT_TRUE(response_info.headers->HasHeaderValue("Sec-WebSocket-Protocol", | 217 EXPECT_TRUE(response_info.headers->HasHeaderValue("Sec-WebSocket-Protocol", |
| 223 "sample")); | 218 "sample")); |
| 224 | 219 |
| 225 WebSocketHandshakeResponseHandler response_handler; | 220 WebSocketHandshakeResponseHandler response_handler; |
| 226 | 221 |
| 227 EXPECT_TRUE(response_handler.ParseResponseInfo(response_info, challenge)); | 222 EXPECT_TRUE(response_handler.ParseResponseInfo(response_info, challenge)); |
| 228 EXPECT_TRUE(response_handler.HasResponse()); | 223 EXPECT_TRUE(response_handler.HasResponse()); |
| 229 | 224 |
| 230 static const char kHandshakeResponseExpectedMessage[] = | 225 static const char kHandshakeResponseExpectedMessage[] = |
| 231 "HTTP/1.1 101 Switching Protocols\r\n" | 226 "HTTP/1.1 101 Switching Protocols\r\n" |
| 232 "Upgrade: websocket\r\n" | 227 "Upgrade: websocket\r\n" |
| 233 "Connection: Upgrade\r\n" | 228 "Connection: Upgrade\r\n" |
| 234 "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n" | 229 "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\r\n" |
| 235 "Sec-WebSocket-Protocol: sample\r\n" | 230 "Sec-WebSocket-Protocol: sample\r\n" |
| 236 "\r\n"; | 231 "\r\n"; |
| 237 | 232 |
| 238 EXPECT_EQ(kHandshakeResponseExpectedMessage, response_handler.GetResponse()); | 233 EXPECT_EQ(kHandshakeResponseExpectedMessage, response_handler.GetResponse()); |
| 239 } | 234 } |
| 240 | 235 |
| 241 } // namespace net | 236 } // namespace net |
| OLD | NEW |