]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: tests for dns_search_domain_unlink()
authorJames Coglan <james@neighbourhood.ie>
Fri, 31 May 2024 13:37:01 +0000 (14:37 +0100)
committerLuca Boccassi <bluca@debian.org>
Tue, 23 Jul 2024 12:22:34 +0000 (13:22 +0100)
src/resolve/test-dns-search-domain.c

index d92bee38de025d1f48d00fc27cb1452086112b26..09e39869f64609452c7242572367c7d6a41a83e0 100644 (file)
@@ -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);