Files
opendht/tests/test_networkengine.h
T
Adrien Beraud dfb66c5a23 tests: cover session-based write authorization and address-bound keys
Encrypted writes must come in a Session envelope, whose ephemeral key is bound to the sender address. Plaintext writes still need a token, now issued by the network engine.
2026-10-29 23:28:48 -04:00

85 lines
3.4 KiB
C++

// Copyright (c) 2014-2026 Savoir-faire Linux Inc.
// SPDX-License-Identifier: MIT
#pragma once
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
namespace test {
class NetworkEngineTester : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(NetworkEngineTester);
#ifdef _MSC_VER
CPPUNIT_TEST(testDisabledOnMsvc);
#else
CPPUNIT_TEST(testCompletesPartialSessionWithDataBeforeHeader);
CPPUNIT_TEST(testBuffersLargeValueBeforeHeader);
CPPUNIT_TEST(testIgnoresEmptyPartialData);
CPPUNIT_TEST(testRejectsUnsolicitedPartialReply);
CPPUNIT_TEST(testDropsMalformedCompletedPartialMessage);
CPPUNIT_TEST(testCompletesPartialSessionFromSameSource);
CPPUNIT_TEST(testSeparatesPartialSessionsBySource);
CPPUNIT_TEST(testPlaintextListenRequiresToken);
CPPUNIT_TEST(testListenConfirmationUpdatesSearchNodeToken);
CPPUNIT_TEST(testListenReopensSocketAfterNodeExpiration);
CPPUNIT_TEST(testUnauthorizedListenFlushClearsListenState);
CPPUNIT_TEST(testGetRequestReuse);
CPPUNIT_TEST(testFilteredProjectionDoesNotWaitForUnrelatedPeer);
CPPUNIT_TEST(testFindNodeRequestReuse);
CPPUNIT_TEST(testTransportDisabledKeepsLegacyWire);
CPPUNIT_TEST(testTransportEncryptsAfterKeyExchange);
CPPUNIT_TEST(testTransportLegacyPeerStaysPlaintext);
CPPUNIT_TEST(testTransportRejectsMismatchedNodeId);
CPPUNIT_TEST(testTransportIgnoresForgedNodeListKey);
CPPUNIT_TEST(testTransportPlaintextDoesNotMoveKeyedNode);
CPPUNIT_TEST(testTransportPrivateNetwork);
CPPUNIT_TEST(testTransportPrivateNetworkRejectsOutsiders);
CPPUNIT_TEST(testTransportEpochRotation);
CPPUNIT_TEST(testTransportPeerRestart);
CPPUNIT_TEST(testTransportHelloIsUnauthenticated);
CPPUNIT_TEST(testTransportSessionAuthorizesWrites);
CPPUNIT_TEST(testTransportInitialWriteIsUnauthorized);
CPPUNIT_TEST(testTransportEphemeralBoundToAddress);
#endif
CPPUNIT_TEST_SUITE_END();
public:
void setUp();
void tearDown();
#ifdef _MSC_VER
void testDisabledOnMsvc();
#else
void testCompletesPartialSessionWithDataBeforeHeader();
void testBuffersLargeValueBeforeHeader();
void testIgnoresEmptyPartialData();
void testRejectsUnsolicitedPartialReply();
void testDropsMalformedCompletedPartialMessage();
void testCompletesPartialSessionFromSameSource();
void testSeparatesPartialSessionsBySource();
void testPlaintextListenRequiresToken();
void testListenConfirmationUpdatesSearchNodeToken();
void testListenReopensSocketAfterNodeExpiration();
void testUnauthorizedListenFlushClearsListenState();
void testGetRequestReuse();
void testFilteredProjectionDoesNotWaitForUnrelatedPeer();
void testFindNodeRequestReuse();
void testTransportDisabledKeepsLegacyWire();
void testTransportEncryptsAfterKeyExchange();
void testTransportLegacyPeerStaysPlaintext();
void testTransportRejectsMismatchedNodeId();
void testTransportIgnoresForgedNodeListKey();
void testTransportPlaintextDoesNotMoveKeyedNode();
void testTransportPrivateNetwork();
void testTransportPrivateNetworkRejectsOutsiders();
void testTransportEpochRotation();
void testTransportPeerRestart();
void testTransportHelloIsUnauthenticated();
void testTransportSessionAuthorizesWrites();
void testTransportInitialWriteIsUnauthorized();
void testTransportEphemeralBoundToAddress();
#endif
};
} // namespace test