Skip to content

Commit 5a79511

Browse files
committed
Add conformance test for regression
1 parent c268442 commit 5a79511

1 file changed

Lines changed: 62 additions & 1 deletion

File tree

  • conformance/conformance-tests/src/resolver/dnssec/scenarios

‎conformance/conformance-tests/src/resolver/dnssec/scenarios/insecure.rs‎

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::net::Ipv4Addr;
22

3-
use dns_test::client::{Client, DigOutput, DigSettings};
3+
use dns_test::client::{Client, DigOutput, DigSettings, DigStatus};
44
use dns_test::name_server::NameServer;
55
use dns_test::record::{A, Record, RecordType};
66
use dns_test::zone_file::{Nsec, SignSettings};
@@ -259,3 +259,64 @@ fn no_ds_record_fixture(
259259

260260
Ok((output, resolver.logs()?))
261261
}
262+
263+
#[test]
264+
fn two_insecure_delegations() -> Result<(), Error> {
265+
let sign_settings = SignSettings::default();
266+
let network = Network::new()?;
267+
let expected_ipv4_addr = Ipv4Addr::new(1, 2, 3, 4);
268+
269+
let mut child_ns = NameServer::new(&dns_test::PEER, FQDN::EXAMPLE_SUBDOMAIN, &network)?;
270+
child_ns.add(Record::a(FQDN::EXAMPLE_SUBDOMAIN, expected_ipv4_addr));
271+
child_ns.add(Record::a(
272+
FQDN::EXAMPLE_SUBDOMAIN.push_label("www"),
273+
expected_ipv4_addr,
274+
));
275+
let mut unsigned_ns = NameServer::new(&dns_test::PEER, FQDN::TEST_DOMAIN, &network)?;
276+
unsigned_ns.referral_nameserver(&child_ns);
277+
278+
let mut tld_ns = NameServer::new(&dns_test::PEER, FQDN::TEST_TLD, &network)?;
279+
tld_ns.referral_nameserver(&unsigned_ns);
280+
let tld_ns = tld_ns.sign(sign_settings.clone())?;
281+
282+
let mut root_ns = NameServer::new(&dns_test::PEER, FQDN::ROOT, &network)?;
283+
root_ns.referral_nameserver(&tld_ns);
284+
root_ns.add(tld_ns.ds().ksk.clone());
285+
let root_ns = root_ns.sign(sign_settings)?;
286+
let root_hint = root_ns.root_hint();
287+
let trust_anchor = root_ns.trust_anchor();
288+
289+
let _root_ns = root_ns.start()?;
290+
let _tld_ns = tld_ns.start()?;
291+
let _unsigned_ns = unsigned_ns.start()?;
292+
let _child_ns = child_ns.start()?;
293+
294+
let resolver = Resolver::new(&network, root_hint)
295+
.trust_anchor(&trust_anchor)
296+
.start()?;
297+
298+
let client = Client::new(&network)?;
299+
let settings = *DigSettings::default().recurse().authentic_data();
300+
301+
let output = client.dig(
302+
settings,
303+
resolver.ipv4_addr(),
304+
RecordType::A,
305+
&FQDN::EXAMPLE_SUBDOMAIN,
306+
)?;
307+
assert_eq!(output.status, DigStatus::NOERROR);
308+
assert!(!output.answer.is_empty());
309+
assert!(!output.flags.authenticated_data);
310+
311+
let output = client.dig(
312+
settings,
313+
resolver.ipv4_addr(),
314+
RecordType::A,
315+
&FQDN::EXAMPLE_SUBDOMAIN.push_label("www"),
316+
)?;
317+
assert_eq!(output.status, DigStatus::NOERROR);
318+
assert!(!output.answer.is_empty());
319+
assert!(!output.flags.authenticated_data);
320+
321+
Ok(())
322+
}

0 commit comments

Comments
 (0)