blob: c9a285dc8d9ffcfbf821d9706053bceecfe2eca8 [file] [log] [blame]
// Copyright (c) 2020 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 "quic/core/http/http_frames.h"
#include <sstream>
#include "quic/core/http/http_constants.h"
#include "quic/platform/api/quic_test.h"
namespace quic {
namespace test {
TEST(HttpFramesTest, CancelPushFrame) {
CancelPushFrame a{1};
EXPECT_TRUE(a == a);
CancelPushFrame b{1};
EXPECT_TRUE(a == b);
b.push_id = 2;
EXPECT_FALSE(a == b);
}
TEST(HttpFramesTest, SettingsFrame) {
SettingsFrame a;
EXPECT_TRUE(a == a);
EXPECT_EQ("", a.ToString());
SettingsFrame b;
b.values[SETTINGS_QPACK_MAX_TABLE_CAPACITY] = 1;
EXPECT_FALSE(a == b);
EXPECT_TRUE(b == b);
a.values[SETTINGS_QPACK_MAX_TABLE_CAPACITY] = 2;
EXPECT_FALSE(a == b);
a.values[SETTINGS_QPACK_MAX_TABLE_CAPACITY] = 1;
EXPECT_TRUE(a == b);
EXPECT_EQ("SETTINGS_QPACK_MAX_TABLE_CAPACITY = 1; ", b.ToString());
std::stringstream s;
s << b;
EXPECT_EQ("SETTINGS_QPACK_MAX_TABLE_CAPACITY = 1; ", s.str());
}
TEST(HttpFramesTest, PushPromiseFrame) {
PushPromiseFrame a{1, ""};
EXPECT_TRUE(a == a);
PushPromiseFrame b{2, ""};
EXPECT_FALSE(a == b);
b.push_id = 1;
EXPECT_TRUE(a == b);
b.headers = "foo";
EXPECT_FALSE(a == b);
EXPECT_TRUE(b == b);
}
TEST(HttpFramesTest, GoAwayFrame) {
GoAwayFrame a{1};
EXPECT_TRUE(a == a);
GoAwayFrame b{2};
EXPECT_FALSE(a == b);
b.id = 1;
EXPECT_TRUE(a == b);
}
TEST(HttpFramesTest, MaxPushIdFrame) {
MaxPushIdFrame a{1};
EXPECT_TRUE(a == a);
MaxPushIdFrame b{2};
EXPECT_FALSE(a == b);
b.push_id = 1;
EXPECT_TRUE(a == b);
}
TEST(HttpFramesTest, PriorityUpdateFrame) {
PriorityUpdateFrame a{REQUEST_STREAM, 0, ""};
EXPECT_TRUE(a == a);
PriorityUpdateFrame b{REQUEST_STREAM, 4, ""};
EXPECT_FALSE(a == b);
a.prioritized_element_id = 4;
EXPECT_TRUE(a == b);
a.prioritized_element_type = PUSH_STREAM;
EXPECT_FALSE(a == b);
b.prioritized_element_type = PUSH_STREAM;
EXPECT_TRUE(a == b);
a.priority_field_value = "foo";
EXPECT_FALSE(a == b);
EXPECT_EQ(
"Priority Frame : {prioritized_element_type: 128, "
"prioritized_element_id: 4, priority_field_value: foo}",
a.ToString());
std::stringstream s;
s << a;
EXPECT_EQ(
"Priority Frame : {prioritized_element_type: 128, "
"prioritized_element_id: 4, priority_field_value: foo}",
s.str());
}
TEST(HttpFramesTest, AcceptChFrame) {
AcceptChFrame a;
EXPECT_TRUE(a == a);
EXPECT_EQ("ACCEPT_CH frame with 0 entries: ", a.ToString());
AcceptChFrame b{{{"foo", "bar"}}};
EXPECT_FALSE(a == b);
a.entries.push_back({"foo", "bar"});
EXPECT_TRUE(a == b);
EXPECT_EQ("ACCEPT_CH frame with 1 entries: origin: foo; value: bar",
a.ToString());
std::stringstream s;
s << a;
EXPECT_EQ("ACCEPT_CH frame with 1 entries: origin: foo; value: bar", s.str());
}
} // namespace test
} // namespace quic