add pdutypeforwardhander
This commit is contained in:
75
test/src/TestPduTypeForwardPaketHandler.cpp
Normal file
75
test/src/TestPduTypeForwardPaketHandler.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
#include "fakeit.hpp"
|
||||
#include "IPacketHandler.h"
|
||||
#include "pdutypeforwardpackethandler.h"
|
||||
#include "tins/ethernetII.h"
|
||||
#include "tins/ip.h"
|
||||
#include "tins/ipv6.h"
|
||||
|
||||
using namespace fakeit;
|
||||
|
||||
namespace TestPduTypePacketForwardPacketHandler
|
||||
{
|
||||
IPacketHandler * ptrTargetCallback = nullptr;
|
||||
class MockPduTypeForwardIPacketHandler : public IPacketHandler
|
||||
{
|
||||
public:
|
||||
int callCount = 0;
|
||||
virtual bool handle(IN const Tins::PDU & pdu, IN IPacketHandler * callBackHandler) override
|
||||
{
|
||||
callCount++;
|
||||
REQUIRE(ptrTargetCallback != nullptr);
|
||||
REQUIRE(ptrTargetCallback == callBackHandler);
|
||||
return callBackHandler->handle(pdu, nullptr);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class MockPduTypeForwardCallBackIPacketHandler : public IPacketHandler
|
||||
{
|
||||
public:
|
||||
int callCount = 0;
|
||||
virtual bool handle(IN const Tins::PDU & pdu, IN IPacketHandler * callBackHandler) override
|
||||
{
|
||||
callCount++;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
TEST_CASE( "test PduTypeForwardPacketHandler", "[PduTypeForwardPacketHandler]" )
|
||||
{
|
||||
SPtrIPacketHandler sptrTargetCallBackHandler = std::make_shared<TestPduTypePacketForwardPacketHandler::MockPduTypeForwardCallBackIPacketHandler>();
|
||||
TestPduTypePacketForwardPacketHandler::ptrTargetCallback = sptrTargetCallBackHandler.get();
|
||||
SPtrIPacketHandler sptrTargetHandler = std::make_shared<TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler>();
|
||||
Mock<IPacketHandler> mockCallCallbackHandler;
|
||||
Fake(Method(mockCallCallbackHandler, handle));
|
||||
SPtrPduTypeForwardPacketHandler sptrPduTypeForwardHandler = std::make_shared<PduTypeForwardPacketHandler>(sptrTargetCallBackHandler);
|
||||
Tins::EthernetII pkt = Tins::EthernetII("11:22:33:44:55:66", "66:55:44:33:22:11");
|
||||
REQUIRE(sptrPduTypeForwardHandler->handle(pkt, &mockCallCallbackHandler.get()) == false);
|
||||
Verify(Method(mockCallCallbackHandler, handle)).Never();
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardCallBackIPacketHandler *)sptrTargetCallBackHandler.get())->callCount == 0);
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler *)sptrTargetHandler.get())->callCount == 0);
|
||||
|
||||
|
||||
sptrPduTypeForwardHandler->getHandlerQueue().push_back(PduTypeHandlerMapEntry(Tins::PDU::ETHERNET_II,sptrTargetHandler));
|
||||
REQUIRE(sptrPduTypeForwardHandler->handle(pkt, &mockCallCallbackHandler.get()) == true);
|
||||
Verify(Method(mockCallCallbackHandler, handle)).Never();
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardCallBackIPacketHandler *)sptrTargetCallBackHandler.get())->callCount == 1);
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler *)sptrTargetHandler.get())->callCount == 1);
|
||||
|
||||
Tins::IP pkt2 = Tins::IP("1.1.1.1", "2.2.2.2");
|
||||
SPtrIPacketHandler sptrTargetHandler2 = std::make_shared<TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler>();
|
||||
sptrPduTypeForwardHandler->getHandlerQueue().push_back(PduTypeHandlerMapEntry(Tins::PDU::IP, sptrTargetHandler2));
|
||||
REQUIRE(sptrPduTypeForwardHandler->handle(pkt2, &mockCallCallbackHandler.get()) == true);
|
||||
Verify(Method(mockCallCallbackHandler, handle)).Never();
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardCallBackIPacketHandler *)sptrTargetCallBackHandler.get())->callCount == 2);
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler *)sptrTargetHandler.get())->callCount == 1);
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler *)sptrTargetHandler2.get())->callCount == 1);
|
||||
|
||||
Tins::IPv6 pkt3 = Tins::IPv6("1::1", "2::2");
|
||||
REQUIRE(sptrPduTypeForwardHandler->handle(pkt3, &mockCallCallbackHandler.get()) == false);
|
||||
Verify(Method(mockCallCallbackHandler, handle)).Never();
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardCallBackIPacketHandler *)sptrTargetCallBackHandler.get())->callCount == 2);
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler *)sptrTargetHandler.get())->callCount == 1);
|
||||
REQUIRE(((TestPduTypePacketForwardPacketHandler::MockPduTypeForwardIPacketHandler *)sptrTargetHandler2.get())->callCount == 1);
|
||||
}
|
||||
@@ -80,11 +80,4 @@ TEST_CASE( "test send and receive Packet", "[TinsNetworkInterfaceCard_SendRec]"
|
||||
ptrPacketSniffer->stopListen();
|
||||
sniffThread3.join();
|
||||
REQUIRE(TestTinsNetworkInterfaceCard::foundPduCount == 4);
|
||||
/*REQUIRE(handler.handle(pkt, nullptr) == false);
|
||||
REQUIRE(handler.handle(pkt, &mockHandler.get()) == true);
|
||||
Verify(Method(mockHandler, handle)).Once();
|
||||
|
||||
pkt = Tins::EthernetII("11:22:33:44:55:66", "66:55:44:33:22:11") / Tins::IP("1.2.3.4", "4.3.2.1") / Tins::TCP();
|
||||
REQUIRE(handler.handle(pkt, &mockHandler.get()) == true);
|
||||
Verify(Method(mockHandler, handle)).Twice();*/
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user