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
3 // found in the LICENSE file.
5 #include "net/websockets/websocket_net_log_params.h"
9 #include "base/callback.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/values.h"
12 #include "testing/gtest/include/gtest/gtest.h"
14 TEST(NetLogWebSocketHandshakeParameterTest
, ToValue
) {
15 base::ListValue
* list
= new base::ListValue();
16 list
->Append(new base::StringValue("GET /demo HTTP/1.1"));
17 list
->Append(new base::StringValue("Host: example.com"));
18 list
->Append(new base::StringValue("Connection: Upgrade"));
19 list
->Append(new base::StringValue("Sec-WebSocket-Key2: 12998 5 Y3 1 .P00"));
20 list
->Append(new base::StringValue("Sec-WebSocket-Protocol: sample"));
21 list
->Append(new base::StringValue("Upgrade: WebSocket"));
22 list
->Append(new base::StringValue(
23 "Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5"));
24 list
->Append(new base::StringValue("Origin: http://example.com"));
25 list
->Append(new base::StringValue(std::string()));
26 list
->Append(new base::StringValue(
27 "\\x00\\x01\\x0a\\x0d\\xff\\xfe\\x0d\\x0a"));
29 base::DictionaryValue expected
;
30 expected
.Set("headers", list
);
32 const std::string
key("\x00\x01\x0a\x0d\xff\xfe\x0d\x0a", 8);
33 const std::string testInput
=
34 "GET /demo HTTP/1.1\r\n"
35 "Host: example.com\r\n"
36 "Connection: Upgrade\r\n"
37 "Sec-WebSocket-Key2: 12998 5 Y3 1 .P00\r\n"
38 "Sec-WebSocket-Protocol: sample\r\n"
39 "Upgrade: WebSocket\r\n"
40 "Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5\r\n"
41 "Origin: http://example.com\r\n"
45 scoped_ptr
<base::Value
> actual(
46 net::NetLogWebSocketHandshakeCallback(&testInput
,
47 net::NetLog::LOG_ALL
));
49 EXPECT_TRUE(expected
.Equals(actual
.get()));