1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-04-18 17:24:03 +03:00
mvfst/quic/client/test/QuicConnectorTest.cpp
Hani Damlaj 2660a288b3 Update Company Name
Summary: - as title

Reviewed By: lnicco

Differential Revision: D33513410

fbshipit-source-id: 282b6f512cf83b9abb7990402661135b658f7bd1
2022-01-13 12:07:48 -08:00

82 lines
2.7 KiB
C++

// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
#include <gtest/gtest.h>
#include <quic/client/connector/QuicConnector.h>
#include <quic/client/test/Mocks.h>
#include <quic/common/test/TestClientUtils.h>
#include <quic/fizz/client/handshake/FizzClientQuicHandshakeContext.h>
using namespace ::testing;
namespace quic::test {
class QuicConnectorTest : public Test {
public:
void SetUp() override {
connector_ = std::make_unique<QuicConnector>(&cb_);
}
std::shared_ptr<fizz::CertificateVerifier> createTestCertificateVerifier() {
return std::make_shared<TestCertificateVerifier>();
}
void executeMockConnect(
MockQuicClientTransport::TestType testType,
std::chrono::milliseconds connectTimeout) {
auto verifier = createTestCertificateVerifier();
auto clientCtx = std::make_shared<fizz::client::FizzClientContext>();
auto pskCache = std::make_shared<BasicQuicPskCache>();
auto sock = std::make_unique<folly::AsyncUDPSocket>(&eventBase_);
auto fizzClientContext = FizzClientQuicHandshakeContext::Builder()
.setFizzClientContext(clientCtx)
.setCertificateVerifier(verifier)
.setPskCache(pskCache)
.build();
quicClient_ = std::make_shared<MockQuicClientTransport>(
testType, &eventBase_, std::move(sock), std::move(fizzClientContext));
connector_->connect(quicClient_, connectTimeout);
}
folly::EventBase eventBase_;
std::unique_ptr<QuicConnector> connector_;
MockQuicConnectorCallback cb_;
std::shared_ptr<MockQuicClientTransport> quicClient_;
};
TEST_F(QuicConnectorTest, TestConnectSuccess) {
EXPECT_CALL(cb_, onConnectSuccess()).Times(1).WillOnce(Invoke([this]() {
eventBase_.terminateLoopSoon();
}));
executeMockConnect(
MockQuicClientTransport::TestType::Success,
std::chrono::milliseconds(200));
eventBase_.loopForever();
}
TEST_F(QuicConnectorTest, TestConnectFailure) {
EXPECT_CALL(cb_, onConnectError(_))
.Times(1)
.WillOnce(Invoke([this](std::pair<quic::QuicErrorCode, std::string>) {
eventBase_.terminateLoopSoon();
}));
executeMockConnect(
MockQuicClientTransport::TestType::Failure,
std::chrono::milliseconds(200));
eventBase_.loopForever();
}
TEST_F(QuicConnectorTest, TestConnectTimeout) {
EXPECT_CALL(cb_, onConnectError(_))
.Times(1)
.WillOnce(Invoke([this](std::pair<quic::QuicErrorCode, std::string>) {
eventBase_.terminateLoopSoon();
}));
executeMockConnect(
MockQuicClientTransport::TestType::Timeout, std::chrono::milliseconds(1));
eventBase_.loopForever();
}
} // namespace quic::test