]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add a few secpoll unit tests.
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Mon, 24 Jun 2019 13:32:59 +0000 (15:32 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Mon, 24 Jun 2019 13:48:06 +0000 (15:48 +0200)
pdns/recursordist/Makefile.am
pdns/recursordist/test-secpoll_cc.cc [new file with mode: 0644]

index 65a8e5b3d0b06be3bdebb749f0e3d1327ba155dc..a50337b4ef2575fd51110b36dc3ce13bd2f0d154 100644 (file)
@@ -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 (file)
index 0000000..6834b52
--- /dev/null
@@ -0,0 +1,85 @@
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_NO_MAIN
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <boost/test/unit_test.hpp>
+
+#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<DNSRecord>(), status, message), PDNSException, checkBasicMessage1);
+  BOOST_CHECK_EXCEPTION(processSecPoll(1, std::vector<DNSRecord>(), status, message), PDNSException, checkBasicMessage2);
+
+  std::vector<DNSRecord> 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();