From: Otto Moerbeek Date: Mon, 24 Jun 2019 13:32:59 +0000 (+0200) Subject: Add a few secpoll unit tests. X-Git-Tag: dnsdist-1.4.0-rc1~93^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2185d17d641d2bc6a8c919d90a99054d928b963a;p=thirdparty%2Fpdns.git Add a few secpoll unit tests. --- diff --git a/pdns/recursordist/Makefile.am b/pdns/recursordist/Makefile.am index 65a8e5b3d0..a50337b4ef 100644 --- a/pdns/recursordist/Makefile.am +++ b/pdns/recursordist/Makefile.am @@ -252,6 +252,7 @@ testrunner_SOURCES = \ recursor_cache.cc recursor_cache.hh \ responsestats.cc \ root-dnssec.hh \ + secpoll.cc \ sillyrecords.cc \ sholder.hh \ sstuff.hh \ @@ -278,6 +279,7 @@ testrunner_SOURCES = \ test-rcpgenerator_cc.cc \ test-recpacketcache_cc.cc \ test-recursorcache_cc.cc \ + test-secpoll_cc.cc \ test-signers.cc \ test-syncres_cc.hh \ test-syncres_cc.cc \ diff --git a/pdns/recursordist/test-secpoll_cc.cc b/pdns/recursordist/test-secpoll_cc.cc new file mode 100644 index 0000000000..6834b52311 --- /dev/null +++ b/pdns/recursordist/test-secpoll_cc.cc @@ -0,0 +1,85 @@ +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_NO_MAIN + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "test-common.hh" +#include "secpoll.hh" + +BOOST_AUTO_TEST_SUITE(test_secpoll_cc) + +bool checkBasicMessage1(const PDNSException &ex) { + BOOST_CHECK_EQUAL(ex.reason, "Had empty answer on NOERROR RCODE"); + return true; +} + +bool checkBasicMessage2(const PDNSException &ex) { + BOOST_CHECK_EQUAL(ex.reason, "RCODE was not NOERROR but " + RCode::to_s(1)); + return true; +} + +bool checkBasicMessage3(const PDNSException &ex) { + BOOST_CHECK_EQUAL(ex.reason, "No TXT record found in response"); + return true; +} + +bool checkBasicMessage4(const PDNSException &ex) { + BOOST_CHECK_EQUAL(ex.reason, "Could not parse status number: stoi: no conversion"); + return true; +} + +bool checkBasicMessage5(const PDNSException &ex) { + BOOST_CHECK_EQUAL(ex.reason, "Could not parse status number: stoi: no conversion"); + return true; +} + +BOOST_AUTO_TEST_CASE(test_secpoll_basic) { + + BOOST_CHECK(!isReleaseVersion("")); + BOOST_CHECK(isReleaseVersion("..")); + BOOST_CHECK(!isReleaseVersion("...")); + + + int status = 0; + std::string message; + + BOOST_CHECK_EXCEPTION(processSecPoll(0, std::vector(), status, message), PDNSException, checkBasicMessage1); + BOOST_CHECK_EXCEPTION(processSecPoll(1, std::vector(), status, message), PDNSException, checkBasicMessage2); + + std::vector v; + + addRecordToList(v, DNSName("aname"), QType::A, "1.2.3.4"); + BOOST_CHECK_EXCEPTION(processSecPoll(0, v, status, message), PDNSException, checkBasicMessage3); + + v.clear(); + addRecordToList(v, DNSName("aname"), QType::TXT, ""); + BOOST_CHECK_EXCEPTION(processSecPoll(0, v, status, message), PDNSException, checkBasicMessage4); + + v.clear(); + addRecordToList(v, DNSName("aname"), QType::TXT, "1NOQUOTES"); + processSecPoll(0, v, status, message); + BOOST_CHECK_EQUAL(status, 1); + BOOST_CHECK_EQUAL(message, ""); + + v.clear(); + addRecordToList(v, DNSName("aname"), QType::TXT, "\"1OK\""); + processSecPoll(0, v, status, message); + BOOST_CHECK_EQUAL(status, 1); + BOOST_CHECK_EQUAL(message, ""); + + v.clear(); + addRecordToList(v, DNSName("aname"), QType::TXT, "\"1 OK\""); + processSecPoll(0, v, status, message); + BOOST_CHECK_EQUAL(status, 1); + BOOST_CHECK_EQUAL(message, "OK"); + + v.clear(); + addRecordToList(v, DNSName("aname"), QType::TXT, "\"X OK\""); + BOOST_CHECK_EXCEPTION(processSecPoll(0, v, status, message), PDNSException, checkBasicMessage5); + +} +BOOST_AUTO_TEST_SUITE_END();