]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: tests for dns_resource_key_new() and dns_resource_key_new_redirect()
authorJames Coglan <james@neighbourhood.ie>
Wed, 29 May 2024 08:53:31 +0000 (09:53 +0100)
committerLuca Boccassi <bluca@debian.org>
Tue, 23 Jul 2024 11:44:35 +0000 (12:44 +0100)
src/resolve/test-dns-rr.c

index d08ec4a5c790e43a30f6fb4c71ce7b34eef67831..0b99b88a6fa10138ef72f0fa18bf8e4192fb3226 100644 (file)
@@ -32,4 +32,99 @@ TEST(dns_resource_record_rdata) {
         ASSERT_EQ(size, 0u);
 }
 
+/* ================================================================
+ * dns_resource_key_new()
+ * ================================================================ */
+
+TEST(dns_resource_key_new) {
+        _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL;
+
+        key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
+        ASSERT_NOT_NULL(key);
+
+        ASSERT_EQ(key->class, DNS_CLASS_IN);
+        ASSERT_EQ(key->type, DNS_TYPE_A);
+        ASSERT_STREQ(dns_resource_key_name(key), "www.example.com");
+}
+
+/* ================================================================
+ * dns_resource_key_new_redirect()
+ * ================================================================ */
+
+TEST(dns_resource_key_new_redirect_cname) {
+        _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL, *redirected = NULL;
+        _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *cname = NULL;
+
+        key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
+        ASSERT_NOT_NULL(key);
+
+        cname = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_CNAME, "www.example.com");
+        ASSERT_NOT_NULL(cname);
+        cname->cname.name = strdup("example.com");
+
+        redirected = dns_resource_key_new_redirect(key, cname);
+        ASSERT_NOT_NULL(redirected);
+
+        ASSERT_EQ(redirected->class, DNS_CLASS_IN);
+        ASSERT_EQ(redirected->type, DNS_TYPE_A);
+        ASSERT_STREQ(dns_resource_key_name(redirected), "example.com");
+}
+
+TEST(dns_resource_key_new_redirect_cname_no_match) {
+        _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL, *redirected = NULL;
+        _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *cname = NULL;
+
+        key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "mail.example.com");
+        ASSERT_NOT_NULL(key);
+
+        cname = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_CNAME, "www.example.com");
+        ASSERT_NOT_NULL(cname);
+        cname->cname.name = strdup("example.com");
+
+        redirected = dns_resource_key_new_redirect(key, cname);
+        ASSERT_NOT_NULL(redirected);
+
+        ASSERT_EQ(redirected->class, DNS_CLASS_IN);
+        ASSERT_EQ(redirected->type, DNS_TYPE_A);
+        ASSERT_STREQ(dns_resource_key_name(redirected), "example.com");
+}
+
+TEST(dns_resource_key_new_redirect_dname) {
+        _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL, *redirected = NULL;
+        _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *dname = NULL;
+
+        key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
+        ASSERT_NOT_NULL(key);
+
+        dname = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_DNAME, "example.com");
+        ASSERT_NOT_NULL(dname);
+        dname->dname.name = strdup("v2.example.com");
+
+        redirected = dns_resource_key_new_redirect(key, dname);
+        ASSERT_NOT_NULL(redirected);
+
+        ASSERT_EQ(redirected->class, DNS_CLASS_IN);
+        ASSERT_EQ(redirected->type, DNS_TYPE_A);
+        ASSERT_STREQ(dns_resource_key_name(redirected), "www.v2.example.com");
+}
+
+TEST(dns_resource_key_new_redirect_dname_no_match) {
+        _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL, *redirected = NULL;
+        _cleanup_(dns_resource_record_unrefp) DnsResourceRecord *dname = NULL;
+
+        key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.examples.com");
+        ASSERT_NOT_NULL(key);
+
+        dname = dns_resource_record_new_full(DNS_CLASS_IN, DNS_TYPE_DNAME, "example.com");
+        ASSERT_NOT_NULL(dname);
+        dname->dname.name = strdup("v2.example.com");
+
+        redirected = dns_resource_key_new_redirect(key, dname);
+        ASSERT_NOT_NULL(redirected);
+
+        ASSERT_EQ(redirected->class, DNS_CLASS_IN);
+        ASSERT_EQ(redirected->type, DNS_TYPE_A);
+        ASSERT_STREQ(dns_resource_key_name(redirected), "www.examples.com");
+}
+
 DEFINE_TEST_MAIN(LOG_DEBUG);