resolved: tests for dns_answer_find_soa()
This commit is contained in:
committed by
Luca Boccassi
parent
f64bf0efc4
commit
4ab02e4fdc
@@ -123,4 +123,106 @@ TEST(dns_answer_match_key_multiple) {
|
||||
dns_resource_key_unref(key);
|
||||
}
|
||||
|
||||
/* ================================================================
|
||||
* dns_answer_find_soa()
|
||||
* ================================================================ */
|
||||
|
||||
TEST(dns_answer_find_soa) {
|
||||
_cleanup_(dns_answer_unrefp) DnsAnswer *answer = NULL;
|
||||
DnsResourceKey *key = NULL;
|
||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
|
||||
DnsAnswerFlags flags = 0;
|
||||
|
||||
answer = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(answer);
|
||||
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_FALSE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
dns_answer_add_soa(answer, "example.com", 3600, 1);
|
||||
|
||||
/* does not find SOA keys */
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_SOA, "example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_FALSE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
/* finds matching A key */
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_SOA, "example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_resource_key_equal(rr->key, key));
|
||||
ASSERT_EQ((int)flags, DNS_ANSWER_AUTHENTICATED);
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
/* finds matching A key suddomain */
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "foo.www.example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_SOA, "example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_resource_key_equal(rr->key, key));
|
||||
ASSERT_EQ((int)flags, DNS_ANSWER_AUTHENTICATED);
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
/* does not match simple prefix */
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "fooexample.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_FALSE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
/* does not match parent domain */
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_FALSE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
/* returns an error for bad escapes */
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.\\example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_ERROR(dns_answer_find_soa(answer, key, &rr, &flags), EINVAL);
|
||||
dns_resource_key_unref(key);
|
||||
}
|
||||
|
||||
TEST(dns_answer_find_soa_multi) {
|
||||
_cleanup_(dns_answer_unrefp) DnsAnswer *answer = NULL;
|
||||
DnsResourceKey *key = NULL;
|
||||
DnsResourceRecord *rr = NULL;
|
||||
DnsAnswerFlags flags = 0;
|
||||
|
||||
answer = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(answer);
|
||||
|
||||
dns_answer_add_soa(answer, "example.com", 3600, 1);
|
||||
dns_answer_add_soa(answer, "example.org", 3600, 1);
|
||||
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_SOA, "example.com");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_resource_key_equal(rr->key, key));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.org");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_answer_find_soa(answer, key, &rr, &flags));
|
||||
dns_resource_key_unref(key);
|
||||
|
||||
key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_SOA, "example.org");
|
||||
ASSERT_NOT_NULL(key);
|
||||
ASSERT_TRUE(dns_resource_key_equal(rr->key, key));
|
||||
dns_resource_key_unref(key);
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN(LOG_DEBUG);
|
||||
|
||||
Reference in New Issue
Block a user