chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_client_session_test.cc

// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "quiche/quic/core/http/quic_spdy_client_session.h"

#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "absl/base/macros.h"
#include "absl/memory/memory.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
#include "quiche/quic/core/crypto/null_decrypter.h"
#include "quiche/quic/core/crypto/null_encrypter.h"
#include "quiche/quic/core/http/http_constants.h"
#include "quiche/quic/core/http/http_frames.h"
#include "quiche/quic/core/http/quic_spdy_client_stream.h"
#include "quiche/quic/core/quic_constants.h"
#include "quiche/quic/core/quic_error_codes.h"
#include "quiche/quic/core/quic_utils.h"
#include "quiche/quic/core/quic_versions.h"
#include "quiche/quic/core/tls_client_handshaker.h"
#include "quiche/quic/platform/api/quic_expect_bug.h"
#include "quiche/quic/platform/api/quic_flags.h"
#include "quiche/quic/platform/api/quic_socket_address.h"
#include "quiche/quic/platform/api/quic_test.h"
#include "quiche/quic/test_tools/crypto_test_utils.h"
#include "quiche/quic/test_tools/mock_quic_spdy_client_stream.h"
#include "quiche/quic/test_tools/quic_config_peer.h"
#include "quiche/quic/test_tools/quic_connection_peer.h"
#include "quiche/quic/test_tools/quic_framer_peer.h"
#include "quiche/quic/test_tools/quic_packet_creator_peer.h"
#include "quiche/quic/test_tools/quic_sent_packet_manager_peer.h"
#include "quiche/quic/test_tools/quic_session_peer.h"
#include "quiche/quic/test_tools/quic_spdy_session_peer.h"
#include "quiche/quic/test_tools/quic_stream_peer.h"
#include "quiche/quic/test_tools/quic_test_utils.h"
#include "quiche/quic/test_tools/simple_session_cache.h"
#include "quiche/common/http/http_header_block.h"

HttpHeaderBlock;
_;
AnyNumber;
AtLeast;
AtMost;
Invoke;
StrictMock;
Truly;

namespace quic {
namespace test {
namespace {

const char kServerHostname[] =;
const uint16_t kPort =;

class TestQuicSpdyClientSession : public QuicSpdyClientSession {};

class QuicSpdyClientSessionTest : public QuicTestWithParam<ParsedQuicVersion> {};

std::string ParamNameFormatter(
    const testing::TestParamInfo<QuicSpdyClientSessionTest::ParamType>& info) {}

INSTANTIATE_TEST_SUITE_P();

TEST_P(QuicSpdyClientSessionTest, GetSSLConfig) {}

TEST_P(QuicSpdyClientSessionTest, CryptoConnect) {}

TEST_P(QuicSpdyClientSessionTest, NoEncryptionAfterInitialEncryption) {}

TEST_P(QuicSpdyClientSessionTest, MaxNumStreamsWithNoFinOrRst) {}

TEST_P(QuicSpdyClientSessionTest, MaxNumStreamsWithRst) {}

TEST_P(QuicSpdyClientSessionTest, ResetAndTrailers) {}

TEST_P(QuicSpdyClientSessionTest, ReceivedMalformedTrailersAfterSendingRst) {}

TEST_P(QuicSpdyClientSessionTest, OnStreamHeaderListWithStaticStream) {}

TEST_P(QuicSpdyClientSessionTest, GoAwayReceived) {}

static bool CheckForDecryptionError(QuicFramer* framer) {}

// Various sorts of invalid packets that should not cause a connection
// to be closed.
TEST_P(QuicSpdyClientSessionTest, InvalidPacketReceived) {}

// A packet with invalid framing should cause a connection to be closed.
TEST_P(QuicSpdyClientSessionTest, InvalidFramedPacketReceived) {}

TEST_P(QuicSpdyClientSessionTest,
       TryToCreateServerInitiatedBidirectionalStream) {}

// Test that upon receiving HTTP/3 SETTINGS, the settings are serialized and
// stored into client session cache.
TEST_P(QuicSpdyClientSessionTest, OnSettingsFrame) {}

TEST_P(QuicSpdyClientSessionTest, IetfZeroRttSetup) {}

// Regression test for b/159168475
TEST_P(QuicSpdyClientSessionTest, RetransmitDataOnZeroRttReject) {}

// When IETF QUIC 0-RTT is rejected, a server-sent fresh transport params is
// available. If the new transport params reduces stream/flow control limit to
// lower than what the client has already used, connection will be closed.
TEST_P(QuicSpdyClientSessionTest, ZeroRttRejectReducesStreamLimitTooMuch) {}

TEST_P(QuicSpdyClientSessionTest,
       ZeroRttRejectReducesStreamFlowControlTooMuch) {}

TEST_P(QuicSpdyClientSessionTest,
       ZeroRttRejectReducesSessionFlowControlTooMuch) {}

TEST_P(QuicSpdyClientSessionTest, BadSettingsInZeroRttResumption) {}

TEST_P(QuicSpdyClientSessionTest, BadSettingsInZeroRttRejection) {}

TEST_P(QuicSpdyClientSessionTest, ServerAcceptsZeroRttButOmitSetting) {}

}  // namespace
}  // namespace test
}  // namespace quic