// // Created by robin on 1/30/18. // #include #include #include #include "dns-server/QDnsUdpServer.h" #include "serverTests.h" struct DnsUdpServerTestParams { QList hexData; }; class DnsUdpServerTest : public ::testing::TestWithParam { }; TEST_P(DnsUdpServerTest, simple) { auto params = GetParam(); QCoreApplication app(m_argc, m_argv); QTimer timer; QObject::connect(&timer, &QTimer::timeout, qApp, &QCoreApplication::quit); timer.start(1000); QDns::Server::QDnsUdpServer server; ASSERT_TRUE(server.start(QHostAddress("127.0.0.1"), 5053)); QList packets; QObject::connect(&server, &QDns::Server::QDnsServer::onRequest, [&packets](QDns::Server::QDnsServer::OnRequestParams params) { packets.append(params.packet); }); QList expectedPackets; QUdpSocket socket; socket.connectToHost(QHostAddress("127.0.0.1"), 5053); for (auto hexData : params.hexData) { auto data = QByteArray::fromHex(hexData); socket.write(data.constData(), data.length()); QDns::Base::QDnsPacket packet(data); if (packet.isValid()) { expectedPackets.append(packet); } } ASSERT_EQ(app.exec(), 0); ASSERT_EQ(packets.size(), expectedPackets.size()); } INSTANTIATE_TEST_CASE_P(DnsUdpServerTestInst, DnsUdpServerTest, ::testing::Values( DnsUdpServerTestParams { QList() << "e1bc010000010000000000000266720000010001" << "00" << "e1bc010000010000000000000266720000010001" } ));