Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Side by Side Diff: net/websockets/websocket_stream_test_util.cc

Issue 869073002: Add WebSocket cookie tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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_stream_test_util.h"
6
7 #include <algorithm>
Ryan Sleevi 2015/02/02 20:14:42 Unnecessary?
yhirano 2015/02/09 10:50:14 Done.
8 #include <string>
9 #include <utility>
10 #include <vector>
Ryan Sleevi 2015/02/02 20:14:41 These three are in your header, unnecessary.
yhirano 2015/02/09 10:50:15 Done.
11
12 #include "base/compiler_specific.h"
Ryan Sleevi 2015/02/02 20:14:42 unnecessary
yhirano 2015/02/09 10:50:15 Done.
13 #include "base/timer/timer.h"
14 #include "net/base/net_errors.h"
Ryan Sleevi 2015/02/02 20:14:42 unnecessary
yhirano 2015/02/09 10:50:15 Done.
15 #include "net/http/http_request_headers.h"
16 #include "net/http/http_response_headers.h"
17 #include "net/socket/client_socket_handle.h"
Ryan Sleevi 2015/02/02 20:14:41 unnecessary
yhirano 2015/02/09 10:50:14 Done.
18 #include "net/socket/socket_test_util.h"
Ryan Sleevi 2015/02/02 20:14:42 unnecessary?
yhirano 2015/02/09 10:50:14 Done.
19 #include "net/test/cert_test_util.h"
Ryan Sleevi 2015/02/02 20:14:42 unnecessary
yhirano 2015/02/09 10:50:14 Done.
20 #include "net/url_request/url_request_test_util.h"
Ryan Sleevi 2015/02/02 20:14:41 unnecessary?
yhirano 2015/02/09 10:50:14 Done.
21 #include "net/websockets/websocket_basic_handshake_stream.h"
Ryan Sleevi 2015/02/02 20:14:42 unnecessary?
yhirano 2015/02/09 10:50:15 For WebSocketBasicHandshakeStream
22 #include "net/websockets/websocket_handshake_request_info.h"
23 #include "net/websockets/websocket_handshake_response_info.h"
24 #include "net/websockets/websocket_handshake_stream_create_helper.h"
25 #include "net/websockets/websocket_test_util.h"
Ryan Sleevi 2015/02/02 20:14:42 unnecessary, in your header
yhirano 2015/02/09 10:50:15 Done.
26 #include "url/gurl.h"
27 #include "url/origin.h"
28
29 namespace net {
30
31 using HeaderKeyValuePair = WebSocketStreamCreateTestBase::HeaderKeyValuePair;
32
33 // A sub-class of WebSocketHandshakeStreamCreateHelper which always sets a
34 // deterministic key to use in the WebSocket handshake.
35 class DeterministicKeyWebSocketHandshakeStreamCreateHelper
36 : public WebSocketHandshakeStreamCreateHelper {
37 public:
38 DeterministicKeyWebSocketHandshakeStreamCreateHelper(
39 WebSocketStream::ConnectDelegate* connect_delegate,
40 const std::vector<std::string>& requested_subprotocols)
41 : WebSocketHandshakeStreamCreateHelper(connect_delegate,
42 requested_subprotocols) {}
43
44 void OnStreamCreated(WebSocketBasicHandshakeStream* stream) override {
45 stream->SetWebSocketKeyForTesting("dGhlIHNhbXBsZSBub25jZQ==");
46 }
47 };
48
49 class WebSocketStreamCreateTestBase::TestConnectDelegate
50 : public WebSocketStream::ConnectDelegate {
51 public:
52 explicit TestConnectDelegate(WebSocketStreamCreateTestBase* owner)
53 : owner_(owner) {}
54
55 void OnSuccess(scoped_ptr<WebSocketStream> stream) override {
56 stream.swap(owner_->stream_);
57 }
58
59 void OnFailure(const std::string& message) override {
60 owner_->has_failed_ = true;
61 owner_->failure_message_ = message;
62 }
63
64 void OnStartOpeningHandshake(
65 scoped_ptr<WebSocketHandshakeRequestInfo> request) override {
66 // Can be called multiple times (in the case of HTTP auth). Last call
67 // wins.
68 owner_->request_info_ = request.Pass();
69 }
70 void OnFinishOpeningHandshake(
71 scoped_ptr<WebSocketHandshakeResponseInfo> response) override {
72 if (owner_->response_info_)
73 ADD_FAILURE();
74 owner_->response_info_ = response.Pass();
75 }
76 void OnSSLCertificateError(
77 scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks>
78 ssl_error_callbacks,
79 const SSLInfo& ssl_info,
80 bool fatal) override {
81 owner_->ssl_error_callbacks_ = ssl_error_callbacks.Pass();
82 owner_->ssl_info_ = ssl_info;
83 owner_->ssl_fatal_ = fatal;
84 }
85
86 private:
87 WebSocketStreamCreateTestBase* owner_;
88 };
89
90 WebSocketStreamCreateTestBase::WebSocketStreamCreateTestBase()
91 : has_failed_(false), ssl_fatal_(false) {
92 }
93
94 WebSocketStreamCreateTestBase::~WebSocketStreamCreateTestBase() {
95 }
96
97 void WebSocketStreamCreateTestBase::CreateAndConnectStream(
98 const std::string& socket_url,
99 const std::vector<std::string>& sub_protocols,
100 const std::string& origin,
101 scoped_ptr<base::Timer> timer) {
102 for (size_t i = 0; i < ssl_data_.size(); ++i) {
103 scoped_ptr<SSLSocketDataProvider> ssl_data(ssl_data_[i]);
104 ssl_data_[i] = NULL;
105 url_request_context_host_.AddSSLSocketDataProvider(ssl_data.Pass());
106 }
107 ssl_data_.clear();
108 scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate(
109 new TestConnectDelegate(this));
110 WebSocketStream::ConnectDelegate* delegate = connect_delegate.get();
111 scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper(
112 new DeterministicKeyWebSocketHandshakeStreamCreateHelper(delegate,
113 sub_protocols));
114 stream_request_ = ::net::CreateAndConnectStreamForTesting(
115 GURL(socket_url), create_helper.Pass(), url::Origin(origin),
116 url_request_context_host_.GetURLRequestContext(), BoundNetLog(),
117 connect_delegate.Pass(),
118 timer ? timer.Pass()
119 : scoped_ptr<base::Timer>(new base::Timer(false, false)));
120 }
121
122 std::vector<HeaderKeyValuePair> WebSocketStreamCreateTestBase::ToVector(
123 const HttpRequestHeaders& headers) {
124 HttpRequestHeaders::Iterator it(headers);
125 std::vector<HeaderKeyValuePair> result;
126 while (it.GetNext())
127 result.push_back(HeaderKeyValuePair(it.name(), it.value()));
128 return result;
129 }
130
131 std::vector<HeaderKeyValuePair> WebSocketStreamCreateTestBase::ToVector(
132 const HttpResponseHeaders& headers) {
133 void* iter = NULL;
134 std::string name, value;
135 std::vector<HeaderKeyValuePair> result;
136 while (headers.EnumerateHeaderLines(&iter, &name, &value))
137 result.push_back(HeaderKeyValuePair(name, value));
138 return result;
139 }
140
141 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698