From: James Coglan Date: Wed, 29 May 2024 08:53:31 +0000 (+0100) Subject: resolved: tests for dns_resource_key_new() and dns_resource_key_new_redirect() X-Git-Tag: v257-rc1~843^2~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=123a99a06becb442e2905721b15be2a0707617b7;p=thirdparty%2Fsystemd.git resolved: tests for dns_resource_key_new() and dns_resource_key_new_redirect() --- 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);