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. 4 5 #include "net/websockets/websocket_net_log_params.h" 6 7 #include <string> 8 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" 13 TEST(NetLogWebSocketHandshakeParameterTest,ToValue)14TEST(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")); 28 29 base::DictionaryValue expected; 30 expected.Set("headers", list); 31 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" 42 "\r\n" + 43 key; 44 45 scoped_ptr<base::Value> actual( 46 net::NetLogWebSocketHandshakeCallback(&testInput, 47 net::NetLog::LOG_ALL)); 48 49 EXPECT_TRUE(expected.Equals(actual.get())); 50 } 51