summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver_test.cc')
-rw-r--r--chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver_test.cc77
1 files changed, 50 insertions, 27 deletions
diff --git a/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver_test.cc b/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver_test.cc
index 71b6d3438e4..31bea896899 100644
--- a/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver_test.cc
+++ b/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver_test.cc
@@ -4,8 +4,9 @@
#include "net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.h"
+#include "absl/strings/escaping.h"
+#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
#include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
using testing::Eq;
@@ -21,19 +22,17 @@ class MockDelegate : public QpackEncoderStreamReceiver::Delegate {
MOCK_METHOD(void,
OnInsertWithNameReference,
- (bool is_static,
- uint64_t name_index,
- quiche::QuicheStringPiece value),
+ (bool is_static, uint64_t name_index, absl::string_view value),
(override));
MOCK_METHOD(void,
OnInsertWithoutNameReference,
- (quiche::QuicheStringPiece name, quiche::QuicheStringPiece value),
+ (absl::string_view name, absl::string_view value),
(override));
MOCK_METHOD(void, OnDuplicate, (uint64_t index), (override));
MOCK_METHOD(void, OnSetDynamicTableCapacity, (uint64_t capacity), (override));
MOCK_METHOD(void,
OnErrorDetected,
- (quiche::QuicheStringPiece error_message),
+ (QuicErrorCode error_code, absl::string_view error_message),
(override));
};
@@ -42,7 +41,7 @@ class QpackEncoderStreamReceiverTest : public QuicTest {
QpackEncoderStreamReceiverTest() : stream_(&delegate_) {}
~QpackEncoderStreamReceiverTest() override = default;
- void Decode(quiche::QuicheStringPiece data) { stream_.Decode(data); }
+ void Decode(absl::string_view data) { stream_.Decode(data); }
StrictMock<MockDelegate>* delegate() { return &delegate_; }
private:
@@ -62,7 +61,7 @@ TEST_F(QpackEncoderStreamReceiverTest, InsertWithNameReference) {
EXPECT_CALL(*delegate(),
OnInsertWithNameReference(false, 42, Eq(std::string(127, 'Z'))));
- Decode(quiche::QuicheTextUtils::HexDecode(
+ Decode(absl::HexStringToBytes(
"c500"
"c28294e7"
"bf4a03626172"
@@ -73,15 +72,19 @@ TEST_F(QpackEncoderStreamReceiverTest, InsertWithNameReference) {
}
TEST_F(QpackEncoderStreamReceiverTest, InsertWithNameReferenceIndexTooLarge) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("Encoded integer too large.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_INTEGER_TOO_LARGE,
+ Eq("Encoded integer too large.")));
- Decode(quiche::QuicheTextUtils::HexDecode("bfffffffffffffffffffffff"));
+ Decode(absl::HexStringToBytes("bfffffffffffffffffffffff"));
}
TEST_F(QpackEncoderStreamReceiverTest, InsertWithNameReferenceValueTooLong) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("Encoded integer too large.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_INTEGER_TOO_LARGE,
+ Eq("Encoded integer too large.")));
- Decode(quiche::QuicheTextUtils::HexDecode("c57fffffffffffffffffffff"));
+ Decode(absl::HexStringToBytes("c57fffffffffffffffffffff"));
}
TEST_F(QpackEncoderStreamReceiverTest, InsertWithoutNameReference) {
@@ -97,7 +100,7 @@ TEST_F(QpackEncoderStreamReceiverTest, InsertWithoutNameReference) {
OnInsertWithoutNameReference(Eq(std::string(31, 'Z')),
Eq(std::string(127, 'Z'))));
- Decode(quiche::QuicheTextUtils::HexDecode(
+ Decode(absl::HexStringToBytes(
"4000"
"4362617203626172"
"6294e78294e7"
@@ -111,33 +114,41 @@ TEST_F(QpackEncoderStreamReceiverTest, InsertWithoutNameReference) {
// Name Length value is too large for varint decoder to decode.
TEST_F(QpackEncoderStreamReceiverTest,
InsertWithoutNameReferenceNameTooLongForVarintDecoder) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("Encoded integer too large.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_INTEGER_TOO_LARGE,
+ Eq("Encoded integer too large.")));
- Decode(quiche::QuicheTextUtils::HexDecode("5fffffffffffffffffffff"));
+ Decode(absl::HexStringToBytes("5fffffffffffffffffffff"));
}
// Name Length value can be decoded by varint decoder but exceeds 1 MB limit.
TEST_F(QpackEncoderStreamReceiverTest,
InsertWithoutNameReferenceNameExceedsLimit) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("String literal too long.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_STRING_LITERAL_TOO_LONG,
+ Eq("String literal too long.")));
- Decode(quiche::QuicheTextUtils::HexDecode("5fffff7f"));
+ Decode(absl::HexStringToBytes("5fffff7f"));
}
// Value Length value is too large for varint decoder to decode.
TEST_F(QpackEncoderStreamReceiverTest,
InsertWithoutNameReferenceValueTooLongForVarintDecoder) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("Encoded integer too large.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_INTEGER_TOO_LARGE,
+ Eq("Encoded integer too large.")));
- Decode(quiche::QuicheTextUtils::HexDecode("436261727fffffffffffffffffffff"));
+ Decode(absl::HexStringToBytes("436261727fffffffffffffffffffff"));
}
// Value Length value can be decoded by varint decoder but exceeds 1 MB limit.
TEST_F(QpackEncoderStreamReceiverTest,
InsertWithoutNameReferenceValueExceedsLimit) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("String literal too long.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_STRING_LITERAL_TOO_LONG,
+ Eq("String literal too long.")));
- Decode(quiche::QuicheTextUtils::HexDecode("436261727fffff7f"));
+ Decode(absl::HexStringToBytes("436261727fffff7f"));
}
TEST_F(QpackEncoderStreamReceiverTest, Duplicate) {
@@ -146,13 +157,15 @@ TEST_F(QpackEncoderStreamReceiverTest, Duplicate) {
// Large index requires two extension bytes.
EXPECT_CALL(*delegate(), OnDuplicate(500));
- Decode(quiche::QuicheTextUtils::HexDecode("111fd503"));
+ Decode(absl::HexStringToBytes("111fd503"));
}
TEST_F(QpackEncoderStreamReceiverTest, DuplicateIndexTooLarge) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("Encoded integer too large.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_INTEGER_TOO_LARGE,
+ Eq("Encoded integer too large.")));
- Decode(quiche::QuicheTextUtils::HexDecode("1fffffffffffffffffffff"));
+ Decode(absl::HexStringToBytes("1fffffffffffffffffffff"));
}
TEST_F(QpackEncoderStreamReceiverTest, SetDynamicTableCapacity) {
@@ -161,13 +174,23 @@ TEST_F(QpackEncoderStreamReceiverTest, SetDynamicTableCapacity) {
// Large capacity requires two extension bytes.
EXPECT_CALL(*delegate(), OnSetDynamicTableCapacity(500));
- Decode(quiche::QuicheTextUtils::HexDecode("313fd503"));
+ Decode(absl::HexStringToBytes("313fd503"));
}
TEST_F(QpackEncoderStreamReceiverTest, SetDynamicTableCapacityTooLarge) {
- EXPECT_CALL(*delegate(), OnErrorDetected(Eq("Encoded integer too large.")));
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_INTEGER_TOO_LARGE,
+ Eq("Encoded integer too large.")));
+
+ Decode(absl::HexStringToBytes("3fffffffffffffffffffff"));
+}
+
+TEST_F(QpackEncoderStreamReceiverTest, InvalidHuffmanEncoding) {
+ EXPECT_CALL(*delegate(),
+ OnErrorDetected(QUIC_QPACK_ENCODER_STREAM_HUFFMAN_ENCODING_ERROR,
+ Eq("Error in Huffman-encoded string.")));
- Decode(quiche::QuicheTextUtils::HexDecode("3fffffffffffffffffffff"));
+ Decode(absl::HexStringToBytes("c281ff"));
}
} // namespace