15 #include <boost/test/unit_test.hpp> 25 const std::vector<const char*>& extra_args = {})
62 BOOST_REQUIRE(!session.Connect(
CService{}, conn, proxy_error));
68 size_t num_sockets{0};
73 if (num_sockets == 1) {
74 return std::make_unique<StaticContentsSock>(
76 "HELLO REPLY RESULT=OK VERSION=3.1\n" 78 "DEST REPLY PUB=WnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqFpxji10Qah0IXVYxZVqkcScM~Yccf9v8BnNlaZbWtSoWnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqFpxji10Qah0IXVYxZVqkcScM~Yccf9v8BnNlaZbWtSoWnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqFpxji10Qah0IXVYxZVqkcScM~Yccf9v8BnNlaZbWtSoWnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqLE4SD-yjT48UNI7qiTUfIPiDitCoiTTz2cr4QGfw89rBQAEAAcAAA== PRIV=WnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqFpxji10Qah0IXVYxZVqkcScM~Yccf9v8BnNlaZbWtSoWnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqFpxji10Qah0IXVYxZVqkcScM~Yccf9v8BnNlaZbWtSoWnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqFpxji10Qah0IXVYxZVqkcScM~Yccf9v8BnNlaZbWtSoWnGOLXRBqHQhdVjFlWqRxJwz9hxx~2~wGc2Vplta1KhacY4tdEGodCF1WMWVapHEnDP2HHH~b~AZzZWmW1rUqLE4SD-yjT48UNI7qiTUfIPiDitCoiTTz2cr4QGfw89rBQAEAAcAAOvuCIKTyv5f~1QgGq7XQl-IqBULTB5WzB3gw5yGPtd1p0AeoADrq1ccZggLPQ4ZLUsGK-HVw373rcTfvxrcuwenqVjiN4tbbYLWtP7xXGWj6fM6HyORhU63GphrjEePpMUHDHXd3o7pWGM-ieVVQSK~1MzF9P93pQWI3Do52EeNAayz4HbpPjNhVBzG1hUEFwznfPmUZBPuaOR4-uBm1NEWEuONlNOCctE4-U0Ukh94z-Qb55U5vXjR5G4apmBblr68t6Wm1TKlzpgFHzSqLryh3stWqrOKY1H0z9eZ2z1EkHFOpD5LyF6nf51e-lV7HLMl44TYzoEHK8RRVodtLcW9lacVdBpv~tOzlZERIiDziZODPETENZMz5oy9DQ7UUw==\n" 80 "SESSION STATUS RESULT=OK\n" 86 if (num_sockets % 2 == 0) {
88 return std::make_unique<StaticContentsSock>(
90 "HELLO REPLY RESULT=OK VERSION=3.1\n" 92 "STREAM STATUS RESULT=OK\n" 97 "STREAM STATUS RESULT=I2P_ERROR MESSAGE=\"Session was closed\"\n" 101 return std::make_unique<StaticContentsSock>(
103 "HELLO REPLY RESULT=OK VERSION=3.1\n" 105 "SESSION STATUS RESULT=OK\n" 115 CService{in6_addr(IN6ADDR_LOOPBACK_INIT), 7656},
119 for (
size_t i = 0; i < 5; ++i) {
124 BOOST_REQUIRE(session.Listen(conn));
125 BOOST_REQUIRE(!session.Accept(conn));
134 return std::make_unique<StaticContentsSock>(
"HELLO REPLY RESULT=OK VERSION=3.1\n" 135 "SESSION STATUS RESULT=OK DESTINATION=\n");
138 const auto i2p_private_key_file = m_args.GetDataDirNet() /
"test_i2p_private_key_damaged";
140 for (
const auto& [file_contents, expected_error] : std::vector<std::tuple<std::string, std::string>>{
141 {
"",
"The private key is too short (0 < 387)"},
143 {
"abcd",
"The private key is too short (4 < 387)"},
145 {std::string(386,
'\0'),
"The private key is too short (386 < 387)"},
147 {std::string(385,
'\0') +
'\0' +
'\1',
148 "Certificate length (1) designates that the private key should be 388 bytes, but it is only " 151 {std::string(385,
'\0') +
'\0' +
'\5' +
"abcd",
152 "Certificate length (5) designates that the private key should be 392 bytes, but it is only " BCLog::Logger & LogInstance()
Save the log level and the value of CreateSock and restore them when the test ends.
const BCLog::Level m_prev_log_level
An established connection with another peer.
bool WriteBinaryFile(const fs::path &filename, const std::string &data)
Write contents of std::string to a file.
EnvTestingSetup(const ChainType chainType=ChainType::MAIN, const std::vector< const char *> &extra_args={})
A combination of a network address (CNetAddr) and a (TCP) port.
BOOST_AUTO_TEST_SUITE_END()
void SetLogLevel(Level level)
#define ASSERT_DEBUG_LOG(message)
A helper class for interruptible sleeps.
static constexpr size_t MAX_MSG_SIZE
The maximum size of an incoming message from the I2P SAM proxy (in bytes).
BOOST_AUTO_TEST_CASE(unlimited_recv)
const std::function< std::unique_ptr< Sock >const CService &)> m_create_sock_orig
std::function< std::unique_ptr< Sock >const CService &)> CreateSock
Socket factory.
const fs::path & GetDataDirNet() const
Get data directory path with appended network identifier.
#define BOOST_CHECK(expr)