From 123a99a06becb442e2905721b15be2a0707617b7 Mon Sep 17 00:00:00 2001 From: James Coglan Date: Wed, 29 May 2024 09:53:31 +0100 Subject: [PATCH] resolved: tests for dns_resource_key_new() and dns_resource_key_new_redirect() --- src/resolve/test-dns-rr.c | 95 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/src/resolve/test-dns-rr.c b/src/resolve/test-dns-rr.c index d08ec4a5c79..0b99b88a6fa 100644 --- a/src/resolve/test-dns-rr.c +++ b/src/resolve/test-dns-rr.c @@ -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); -- 2.47.3