From: James Coglan Date: Fri, 31 May 2024 13:37:01 +0000 (+0100) Subject: resolved: tests for dns_search_domain_unlink() X-Git-Tag: v257-rc1~839^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5fef5552a658130f00dc97d0a1003a6a49f3ca96;p=thirdparty%2Fsystemd.git resolved: tests for dns_search_domain_unlink() --- diff --git a/src/resolve/test-dns-search-domain.c b/src/resolve/test-dns-search-domain.c index d92bee38de0..09e39869f64 100644 --- a/src/resolve/test-dns-search-domain.c +++ b/src/resolve/test-dns-search-domain.c @@ -71,4 +71,74 @@ TEST(dns_search_domain_new_link_limit) { ASSERT_NOT_NULL(sd); } +/* ================================================================ + * dns_search_domain_unlink() + * ================================================================ */ + +TEST(dns_search_domain_unlink_system) { + Manager manager = {}; + _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd1 = NULL, *sd3 = NULL; + DnsSearchDomain *sd2 = NULL; + const char *names[2]; + size_t i = 0; + + dns_search_domain_new(&manager, &sd1, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "local"); + ASSERT_NOT_NULL(sd1); + + dns_search_domain_new(&manager, &sd2, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "vpn.example.com"); + ASSERT_NOT_NULL(sd2); + + dns_search_domain_new(&manager, &sd3, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "org"); + ASSERT_NOT_NULL(sd3); + + ASSERT_TRUE(sd2->linked); + ASSERT_EQ(manager.n_search_domains, 3u); + + dns_search_domain_unlink(sd2); + + ASSERT_EQ(manager.n_search_domains, 2u); + + LIST_FOREACH(domains, d, manager.search_domains) { + names[i++] = DNS_SEARCH_DOMAIN_NAME(d); + } + + ASSERT_STREQ(names[0], "local"); + ASSERT_STREQ(names[1], "org"); +} + +TEST(dns_search_domain_unlink_link) { + Manager manager = {}; + Link *link = NULL; + _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd1 = NULL, *sd3 = NULL; + DnsSearchDomain *sd2 = NULL; + const char *names[2]; + unsigned int i = 0; + + link_new(&manager, &link, 1); + ASSERT_NOT_NULL(link); + + dns_search_domain_new(&manager, &sd1, DNS_SEARCH_DOMAIN_LINK, link, "local"); + ASSERT_NOT_NULL(sd1); + + dns_search_domain_new(&manager, &sd2, DNS_SEARCH_DOMAIN_LINK, link, "vpn.example.com"); + ASSERT_NOT_NULL(sd2); + + dns_search_domain_new(&manager, &sd3, DNS_SEARCH_DOMAIN_LINK, link, "org"); + ASSERT_NOT_NULL(sd3); + + ASSERT_TRUE(sd2->linked); + ASSERT_EQ(link->n_search_domains, 3u); + + dns_search_domain_unlink(sd2); + + ASSERT_EQ(link->n_search_domains, 2u); + + LIST_FOREACH(domains, d, link->search_domains) { + names[i++] = DNS_SEARCH_DOMAIN_NAME(d); + } + + ASSERT_STREQ(names[0], "local"); + ASSERT_STREQ(names[1], "org"); +} + DEFINE_TEST_MAIN(LOG_DEBUG);