Home | History | Annotate | Download | only in websockets
      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 
     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"));
     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