1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-25 15:43:13 +03:00
Files
mvfst/quic/server/handshake/test/ServerTransportParametersTest.cpp
Matt Joras 42bba01005 Draft-29 support.
Summary:
This implements the connection ID validation via transport parameters. Note we don't do anything with the retry transport parameter yet.

This will probably require further surgery to tests when we want the MVFST version to do this, but for now I'm punting on that test plumbing.

This retains support for h3-27.

Reviewed By: yangchi

Differential Revision: D22045631

fbshipit-source-id: e93841e734c0683655c751d808fd90b3b391eb3e
2020-06-16 17:05:41 -07:00

79 lines
2.4 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <quic/QuicConstants.h>
#include <quic/common/test/TestUtils.h>
#include <quic/server/handshake/ServerTransportParametersExtension.h>
#include <fizz/protocol/test/TestMessages.h>
using namespace fizz;
using namespace fizz::test;
namespace quic {
namespace test {
static ClientHello getClientHello() {
auto chlo = TestMessages::clientHello();
ClientTransportParameters clientParams;
clientParams.parameters.emplace_back(
CustomIntegralTransportParameter(0xffff, 0xffff).encode());
chlo.extensions.push_back(encodeExtension(clientParams, QuicVersion::MVFST));
return chlo;
}
TEST(ServerTransportParametersTest, TestGetExtensions) {
ServerTransportParametersExtension ext(
QuicVersion::MVFST,
kDefaultConnectionWindowSize,
kDefaultStreamWindowSize,
kDefaultStreamWindowSize,
kDefaultStreamWindowSize,
std::numeric_limits<uint32_t>::max(),
std::numeric_limits<uint32_t>::max(),
kDefaultIdleTimeout,
kDefaultAckDelayExponent,
kDefaultUDPSendPacketLen,
kDefaultPartialReliability,
generateStatelessResetToken(),
ConnectionId(std::vector<uint8_t>{0xff, 0xfe, 0xfd, 0xfc}),
ConnectionId(std::vector<uint8_t>()));
auto extensions = ext.getExtensions(getClientHello());
EXPECT_EQ(extensions.size(), 1);
auto serverParams = getServerExtension(extensions, QuicVersion::MVFST);
EXPECT_TRUE(serverParams.has_value());
}
TEST(ServerTransportParametersTest, TestGetExtensionsMissingClientParams) {
ServerTransportParametersExtension ext(
QuicVersion::MVFST,
kDefaultConnectionWindowSize,
kDefaultStreamWindowSize,
kDefaultStreamWindowSize,
kDefaultStreamWindowSize,
std::numeric_limits<uint32_t>::max(),
std::numeric_limits<uint32_t>::max(),
kDefaultIdleTimeout,
kDefaultAckDelayExponent,
kDefaultUDPSendPacketLen,
kDefaultPartialReliability,
generateStatelessResetToken(),
ConnectionId(std::vector<uint8_t>{0xff, 0xfe, 0xfd, 0xfc}),
ConnectionId(std::vector<uint8_t>()));
EXPECT_THROW(ext.getExtensions(TestMessages::clientHello()), FizzException);
}
} // namespace test
} // namespace quic