From: James Coglan Date: Fri, 31 May 2024 14:11:53 +0000 (+0100) Subject: resolved: tests for search domain marking and unlinking X-Git-Tag: v257-rc1~839^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76bd2dce23005bde1d2c5815e6ffb124266b20e7;p=thirdparty%2Fsystemd.git resolved: tests for search domain marking and unlinking --- diff --git a/src/resolve/test-dns-search-domain.c b/src/resolve/test-dns-search-domain.c index 2c18af7aad2..b0d9a01fae2 100644 --- a/src/resolve/test-dns-search-domain.c +++ b/src/resolve/test-dns-search-domain.c @@ -143,4 +143,120 @@ TEST(dns_search_domain_unlink_link) { check_domains(link->search_domains, expected, 2); } +/* ================================================================ + * dns_search_domain_mark_all() + * ================================================================ */ + +TEST(dns_search_domain_mark_all) { + Manager manager = {}; + _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd1 = NULL, *sd2 = NULL, *sd3 = NULL; + + 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_FALSE(sd1->marked); + ASSERT_FALSE(sd2->marked); + ASSERT_FALSE(sd3->marked); + + dns_search_domain_mark_all(sd1); + + ASSERT_TRUE(sd1->marked); + ASSERT_TRUE(sd2->marked); + ASSERT_TRUE(sd3->marked); +} + +/* ================================================================ + * dns_search_domain_move_back_and_unmark() + * ================================================================ */ + +TEST(dns_search_domain_move_back_and_unmark) { + Manager manager = {}; + _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd1 = NULL, *sd2 = NULL, *sd3 = NULL; + + 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); + + dns_search_domain_move_back_and_unmark(sd1); + check_domains(manager.search_domains, (const char *[]) { "local", "vpn.example.com", "org" }, 3); + + sd1->marked = 1; + + dns_search_domain_move_back_and_unmark(sd1); + check_domains(manager.search_domains, (const char *[]) { "vpn.example.com", "org", "local" }, 3); + + sd3->marked = 1; + + dns_search_domain_move_back_and_unmark(sd3); + check_domains(manager.search_domains, (const char *[]) { "vpn.example.com", "local", "org" }, 3); +} + +/* ================================================================ + * dns_search_domain_unlink_marked() + * ================================================================ */ + +TEST(dns_search_domain_unlink_marked) { + Manager manager = {}; + DnsSearchDomain *sd1 = NULL, *sd2 = NULL; + _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd3 = NULL; + + 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); + + dns_search_domain_unlink_marked(sd1); + ASSERT_EQ(manager.n_search_domains, 3u); + check_domains(manager.search_domains, (const char *[]) { "local", "vpn.example.com", "org" }, 3); + + sd2->marked = 1; + + dns_search_domain_unlink_marked(sd1); + ASSERT_EQ(manager.n_search_domains, 2u); + check_domains(manager.search_domains, (const char *[]) { "local", "org" }, 2); + + sd1->marked = 1; + + dns_search_domain_unlink_marked(sd1); + ASSERT_EQ(manager.n_search_domains, 1u); + check_domains(manager.search_domains, (const char *[]) { "org" }, 1); +} + +/* ================================================================ + * dns_search_domain_unlink_all() + * ================================================================ */ + +TEST(dns_search_domain_unlink_all) { + Manager manager = {}; + DnsSearchDomain *sd1 = NULL, *sd2 = NULL, *sd3 = NULL; + + 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); + + dns_search_domain_unlink_all(sd1); + + ASSERT_EQ(manager.n_search_domains, 0u); +} + DEFINE_TEST_MAIN(LOG_DEBUG);