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

Unified Diff: net/websockets/websocket_stream_test.cc

Issue 869073002: Add WebSocket cookie tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: net/websockets/websocket_stream_test.cc
diff --git a/net/websockets/websocket_stream_test.cc b/net/websockets/websocket_stream_test.cc
index 0fdc34b93bba51aef06abaf6a4c3fb468d9dae93..6fdd0ac894e86b6a12b5d5c562e9a058c85ff1e8 100644
--- a/net/websockets/websocket_stream_test.cc
+++ b/net/websockets/websocket_stream_test.cc
@@ -31,6 +31,7 @@
#include "net/websockets/websocket_handshake_request_info.h"
#include "net/websockets/websocket_handshake_response_info.h"
#include "net/websockets/websocket_handshake_stream_create_helper.h"
+#include "net/websockets/websocket_stream_test_util.h"
#include "net/websockets/websocket_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
@@ -39,25 +40,6 @@
namespace net {
namespace {
-typedef std::pair<std::string, std::string> HeaderKeyValuePair;
-
-std::vector<HeaderKeyValuePair> ToVector(const HttpRequestHeaders& headers) {
- HttpRequestHeaders::Iterator it(headers);
- std::vector<HeaderKeyValuePair> result;
- while (it.GetNext())
- result.push_back(HeaderKeyValuePair(it.name(), it.value()));
- return result;
-}
-
-std::vector<HeaderKeyValuePair> ToVector(const HttpResponseHeaders& headers) {
- void* iter = NULL;
- std::string name, value;
- std::vector<HeaderKeyValuePair> result;
- while (headers.EnumerateHeaderLines(&iter, &name, &value))
- result.push_back(HeaderKeyValuePair(name, value));
- return result;
-}
-
// Simple builder for a DeterministicSocketData object to save repetitive code.
// It always sets the connect data to MockConnect(SYNCHRONOUS, OK), so it cannot
// be used in tests where the connect fails. In practice, those tests never have
@@ -88,25 +70,9 @@ class MockWeakTimer : public base::MockTimer,
: MockTimer(retain_user_task, is_repeating) {}
};
-// A sub-class of WebSocketHandshakeStreamCreateHelper which always sets a
-// deterministic key to use in the WebSocket handshake.
-class DeterministicKeyWebSocketHandshakeStreamCreateHelper
- : public WebSocketHandshakeStreamCreateHelper {
- public:
- DeterministicKeyWebSocketHandshakeStreamCreateHelper(
- WebSocketStream::ConnectDelegate* connect_delegate,
- const std::vector<std::string>& requested_subprotocols)
- : WebSocketHandshakeStreamCreateHelper(connect_delegate,
- requested_subprotocols) {}
-
- void OnStreamCreated(WebSocketBasicHandshakeStream* stream) override {
- stream->SetWebSocketKeyForTesting("dGhlIHNhbXBsZSBub25jZQ==");
- }
-};
-
-class WebSocketStreamCreateTest : public ::testing::Test {
+class WebSocketStreamCreateTest : public ::testing::Test,
+ public WebSocketStreamCreateTestBase {
public:
- WebSocketStreamCreateTest() : has_failed_(false), ssl_fatal_(false) {}
~WebSocketStreamCreateTest() override {
// Permit any endpoint locks to be released.
stream_request_.reset();
@@ -161,100 +127,6 @@ class WebSocketStreamCreateTest : public ::testing::Test {
void AddRawExpectations(scoped_ptr<DeterministicSocketData> socket_data) {
url_request_context_host_.AddRawExpectations(socket_data.Pass());
}
-
- // A wrapper for CreateAndConnectStreamForTesting that knows about our default
- // parameters.
- void CreateAndConnectStream(const std::string& socket_url,
- const std::vector<std::string>& sub_protocols,
- const std::string& origin,
- scoped_ptr<base::Timer> timer) {
- for (size_t i = 0; i < ssl_data_.size(); ++i) {
- scoped_ptr<SSLSocketDataProvider> ssl_data(ssl_data_[i]);
- ssl_data_[i] = NULL;
- url_request_context_host_.AddSSLSocketDataProvider(ssl_data.Pass());
- }
- ssl_data_.clear();
- scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate(
- new TestConnectDelegate(this));
- WebSocketStream::ConnectDelegate* delegate = connect_delegate.get();
- scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper(
- new DeterministicKeyWebSocketHandshakeStreamCreateHelper(
- delegate, sub_protocols));
- stream_request_ = ::net::CreateAndConnectStreamForTesting(
- GURL(socket_url),
- create_helper.Pass(),
- url::Origin(origin),
- url_request_context_host_.GetURLRequestContext(),
- BoundNetLog(),
- connect_delegate.Pass(),
- timer ? timer.Pass() : scoped_ptr<base::Timer>(
- new base::Timer(false, false)));
- }
-
- static void RunUntilIdle() { base::RunLoop().RunUntilIdle(); }
-
- // A simple function to make the tests more readable. Creates an empty vector.
- static std::vector<std::string> NoSubProtocols() {
- return std::vector<std::string>();
- }
-
- const std::string& failure_message() const { return failure_message_; }
- bool has_failed() const { return has_failed_; }
-
- class TestConnectDelegate : public WebSocketStream::ConnectDelegate {
- public:
- explicit TestConnectDelegate(WebSocketStreamCreateTest* owner)
- : owner_(owner) {}
-
- void OnSuccess(scoped_ptr<WebSocketStream> stream) override {
- stream.swap(owner_->stream_);
- }
-
- void OnFailure(const std::string& message) override {
- owner_->has_failed_ = true;
- owner_->failure_message_ = message;
- }
-
- void OnStartOpeningHandshake(
- scoped_ptr<WebSocketHandshakeRequestInfo> request) override {
- // Can be called multiple times (in the case of HTTP auth). Last call
- // wins.
- owner_->request_info_ = request.Pass();
- }
- void OnFinishOpeningHandshake(
- scoped_ptr<WebSocketHandshakeResponseInfo> response) override {
- if (owner_->response_info_)
- ADD_FAILURE();
- owner_->response_info_ = response.Pass();
- }
- void OnSSLCertificateError(
- scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks>
- ssl_error_callbacks,
- const SSLInfo& ssl_info,
- bool fatal) override {
- owner_->ssl_error_callbacks_ = ssl_error_callbacks.Pass();
- owner_->ssl_info_ = ssl_info;
- owner_->ssl_fatal_ = fatal;
- }
-
- private:
- WebSocketStreamCreateTest* owner_;
- };
-
- WebSocketTestURLRequestContextHost url_request_context_host_;
- scoped_ptr<WebSocketStreamRequest> stream_request_;
- // Only set if the connection succeeded.
- scoped_ptr<WebSocketStream> stream_;
- // Only set if the connection failed.
- std::string failure_message_;
- bool has_failed_;
- scoped_ptr<WebSocketHandshakeRequestInfo> request_info_;
- scoped_ptr<WebSocketHandshakeResponseInfo> response_info_;
- scoped_ptr<WebSocketEventInterface::SSLErrorCallbacks> ssl_error_callbacks_;
- SSLInfo ssl_info_;
- bool ssl_fatal_;
- ScopedVector<SSLSocketDataProvider> ssl_data_;
- ScopedWebSocketEndpointZeroUnlockDelay zero_unlock_delay_;
};
// There are enough tests of the Sec-WebSocket-Extensions header that they

Powered by Google App Engine
This is Rietveld 408576698