#include "quiche/quic/tools/connect_tunnel.h"
#include <cstdint>
#include <memory>
#include <string>
#include <utility>
#include "absl/container/flat_hash_set.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
#include "quiche/quic/core/connecting_client_socket.h"
#include "quiche/quic/core/quic_connection_id.h"
#include "quiche/quic/core/quic_error_codes.h"
#include "quiche/quic/core/quic_types.h"
#include "quiche/quic/core/socket_factory.h"
#include "quiche/quic/platform/api/quic_socket_address.h"
#include "quiche/quic/platform/api/quic_test_loopback.h"
#include "quiche/quic/test_tools/quic_test_utils.h"
#include "quiche/quic/tools/quic_backend_response.h"
#include "quiche/quic/tools/quic_simple_server_backend.h"
#include "quiche/common/http/http_header_block.h"
#include "quiche/common/platform/api/quiche_mem_slice.h"
#include "quiche/common/platform/api/quiche_test.h"
namespace quic::test {
namespace {
_;
AllOf;
AnyOf;
ElementsAre;
Eq;
Ge;
Gt;
InvokeWithoutArgs;
IsEmpty;
Matcher;
NiceMock;
Pair;
Property;
Return;
StrictMock;
class MockRequestHandler : public QuicSimpleServerBackend::RequestHandler { … };
class MockSocketFactory : public SocketFactory { … };
class MockSocket : public ConnectingClientSocket { … };
class ConnectTunnelTest : public quiche::test::QuicheTest { … };
TEST_F(ConnectTunnelTest, OpenTunnel) { … }
TEST_F(ConnectTunnelTest, OpenTunnelToIpv4LiteralDestination) { … }
TEST_F(ConnectTunnelTest, OpenTunnelToIpv6LiteralDestination) { … }
TEST_F(ConnectTunnelTest, OpenTunnelWithMalformedRequest) { … }
TEST_F(ConnectTunnelTest, OpenTunnelWithUnacceptableDestination) { … }
TEST_F(ConnectTunnelTest, ReceiveFromDestination) { … }
TEST_F(ConnectTunnelTest, SendToDestination) { … }
TEST_F(ConnectTunnelTest, DestinationDisconnect) { … }
TEST_F(ConnectTunnelTest, DestinationTcpConnectionError) { … }
}
}