]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: More SVC unit tests
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 25 Mar 2022 14:04:14 +0000 (15:04 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 23 Sep 2022 08:21:15 +0000 (10:21 +0200)
pdns/dnsdistdist/test-dnsdistsvc_cc.cc

index c15d07a51caac8a482e01f3ccba28092fe3f59c3..cbb1e658b02f5b8b8d87d78268b989de4c9a750a 100644 (file)
@@ -14,6 +14,13 @@ BOOST_AUTO_TEST_CASE(test_Basic)
 {
   DNSName target("powerdns.com.");
 
+  {
+    // invalid priority of 0 + parameters
+    std::vector<uint8_t> payload;
+    const uint16_t priority = 0;
+    BOOST_CHECK(!generateSVCPayload(payload, priority, target, {SvcParam::SvcParamKey::port}, {"dot"}, false, 853, std::string(), {ComboAddress("192.0.2.1")}, {ComboAddress("2001:db8::1")}, {}));
+  }
+
   {
     std::vector<uint8_t> payload;
     const uint16_t priority = 1;
@@ -93,4 +100,33 @@ BOOST_AUTO_TEST_CASE(test_Basic)
   }
 }
 
+BOOST_AUTO_TEST_CASE(test_Parsing)
+{
+  svcParamsLua_t params;
+  params["mandatory"] = std::vector<std::pair<int, std::string>>({
+      { 1, "port" },
+    });
+  params["alpn"] = std::vector<std::pair<int, std::string>>({
+      { 1, "h2" },
+    });
+  params["noDefaultAlpn"] = static_cast<bool>(true);
+  params["port"] = static_cast<uint16_t>(443);
+  params["ipv4hint"] = std::vector<std::pair<int, std::string>>({
+      { 1, "192.0.2.1" },
+    });
+  params["ipv6hint"] = std::vector<std::pair<int, std::string>>({
+      { 1, "2001:db8::1" },
+    });
+  params["ech"] = std::string("test");
+
+  auto parsed = parseSVCParameters(params);
+  BOOST_CHECK(parsed.mandatoryParams == std::set<uint16_t>{ SvcParam::SvcParamKey::port });
+  BOOST_CHECK(parsed.alpns == std::vector<std::string>{ "h2" });
+  BOOST_CHECK(parsed.ipv4hints == std::vector<ComboAddress>{ ComboAddress("192.0.2.1") });
+  BOOST_CHECK(parsed.ipv6hints == std::vector<ComboAddress>{ ComboAddress("2001:db8::1") });
+  BOOST_CHECK_EQUAL(parsed.ech, "test");
+  BOOST_CHECK_EQUAL(*parsed.port, 443);
+  BOOST_CHECK_EQUAL(parsed.noDefaultAlpn, true);
+}
+
 BOOST_AUTO_TEST_SUITE_END()