chromium/net/third_party/quiche/src/quiche/http2/decoder/http2_frame_decoder_test.cc

// Copyright 2016 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/http2/decoder/http2_frame_decoder.h"

// Tests of Http2FrameDecoder.

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

#include "absl/strings/string_view.h"
#include "quiche/http2/http2_constants.h"
#include "quiche/http2/test_tools/frame_parts.h"
#include "quiche/http2/test_tools/frame_parts_collector_listener.h"
#include "quiche/http2/test_tools/http2_random.h"
#include "quiche/http2/test_tools/random_decoder_test_base.h"
#include "quiche/http2/test_tools/verify_macros.h"
#include "quiche/common/platform/api/quiche_logging.h"

AssertionSuccess;

namespace http2 {
namespace test {
class Http2FrameDecoderPeer {};

namespace {

class Http2FrameDecoderTest : public RandomDecoderTest {};

////////////////////////////////////////////////////////////////////////////////
// Tests that pass the minimum allowed size for the frame type, which is often
// empty. The tests are in order by frame type value (i.e. 0 for DATA frames).

TEST_F(Http2FrameDecoderTest, DataEmpty) {}

TEST_F(Http2FrameDecoderTest, HeadersEmpty) {}

TEST_F(Http2FrameDecoderTest, Priority) {}

TEST_F(Http2FrameDecoderTest, RstStream) {}

TEST_F(Http2FrameDecoderTest, SettingsEmpty) {}

TEST_F(Http2FrameDecoderTest, SettingsAck) {}

TEST_F(Http2FrameDecoderTest, PushPromiseMinimal) {}

TEST_F(Http2FrameDecoderTest, Ping) {}

TEST_F(Http2FrameDecoderTest, PingAck) {}

TEST_F(Http2FrameDecoderTest, GoAwayMinimal) {}

TEST_F(Http2FrameDecoderTest, WindowUpdate) {}

TEST_F(Http2FrameDecoderTest, ContinuationEmpty) {}

TEST_F(Http2FrameDecoderTest, AltSvcMinimal) {}

TEST_F(Http2FrameDecoderTest, UnknownEmpty) {}

////////////////////////////////////////////////////////////////////////////////
// Tests of longer payloads, for those frame types that allow longer payloads.

TEST_F(Http2FrameDecoderTest, DataPayload) {}

TEST_F(Http2FrameDecoderTest, HeadersPayload) {}

TEST_F(Http2FrameDecoderTest, HeadersPriority) {}

TEST_F(Http2FrameDecoderTest, Settings) {}

TEST_F(Http2FrameDecoderTest, PushPromisePayload) {}

TEST_F(Http2FrameDecoderTest, GoAwayOpaqueData) {}

TEST_F(Http2FrameDecoderTest, ContinuationPayload) {}

TEST_F(Http2FrameDecoderTest, AltSvcPayload) {}

TEST_F(Http2FrameDecoderTest, PriorityUpdatePayload) {}

TEST_F(Http2FrameDecoderTest, UnknownPayload) {}

////////////////////////////////////////////////////////////////////////////////
// Tests of padded payloads, for those frame types that allow padding.

TEST_F(Http2FrameDecoderTest, DataPayloadAndPadding) {}

TEST_F(Http2FrameDecoderTest, HeadersPayloadAndPadding) {}

TEST_F(Http2FrameDecoderTest, HeadersPayloadPriorityAndPadding) {}

TEST_F(Http2FrameDecoderTest, PushPromisePayloadAndPadding) {}

////////////////////////////////////////////////////////////////////////////////
// Payload too short errors.

TEST_F(Http2FrameDecoderTest, DataMissingPadLengthField) {}

TEST_F(Http2FrameDecoderTest, HeaderPaddingTooLong) {}

TEST_F(Http2FrameDecoderTest, HeaderMissingPriority) {}

TEST_F(Http2FrameDecoderTest, PriorityTooShort) {}

TEST_F(Http2FrameDecoderTest, RstStreamTooShort) {}

// SETTINGS frames must a multiple of 6 bytes long, so an 9 byte payload is
// invalid.
TEST_F(Http2FrameDecoderTest, SettingsWrongSize) {}

TEST_F(Http2FrameDecoderTest, PushPromiseTooShort) {}

TEST_F(Http2FrameDecoderTest, PushPromisePaddedTruncatedPromise) {}

TEST_F(Http2FrameDecoderTest, PingTooShort) {}

TEST_F(Http2FrameDecoderTest, GoAwayTooShort) {}

TEST_F(Http2FrameDecoderTest, WindowUpdateTooShort) {}

TEST_F(Http2FrameDecoderTest, AltSvcTruncatedOriginLength) {}

TEST_F(Http2FrameDecoderTest, AltSvcTruncatedOrigin) {}

////////////////////////////////////////////////////////////////////////////////
// Payload too long errors.

// The decoder calls the listener's OnFrameSizeError method if the frame's
// payload is longer than the currently configured maximum payload size.
TEST_F(Http2FrameDecoderTest, BeyondMaximum) {}

TEST_F(Http2FrameDecoderTest, PriorityTooLong) {}

TEST_F(Http2FrameDecoderTest, RstStreamTooLong) {}

TEST_F(Http2FrameDecoderTest, SettingsAckTooLong) {}

TEST_F(Http2FrameDecoderTest, PingAckTooLong) {}

TEST_F(Http2FrameDecoderTest, WindowUpdateTooLong) {}

}  // namespace
}  // namespace test
}  // namespace http2