systemd-resolved-rs 0.1.1

A compatibility-oriented reimplementation of systemd-resolved
#[cfg(test)]
mod test_27_special_names_are_synthetic_nxdomain {
    use super::*;

    #[test]
    fn pinned_never_resolve_names_return_nxdomain_without_servers() {
        let mut config = Config::default();
        config.upstreams.clear();
        config.fallback_upstreams.clear();
        let resolver = Resolver::new(config);

        for name in [
            "0.in-addr.arpa",
            "1.0.in-addr.arpa",
            "255.255.255.255.in-addr.arpa",
            "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa",
            "hello.invalid",
            "hello.alt",
        ] {
            let query = make_query(name, TYPE_A, 0x2700).expect("query");
            let (response, flags) = resolver
                .query_on_link_with_flags(&query, QueryMode::Full, None, 0)
                .expect("synthetic NXDOMAIN");
            assert_eq!(Header::parse(&response).expect("header").response_code(), 3);
            assert_eq!(flags, synthetic_response_flags(0, &query));
        }
    }

    #[test]
    fn special_suffixes_match_on_dns_label_boundaries() {
        assert!(dns_name_dont_resolve("INVALID."));
        assert!(dns_name_dont_resolve("child.example.alt"));
        assert!(!dns_name_dont_resolve("notinvalid"));
        assert!(!dns_name_dont_resolve("salt"));
        assert!(!dns_name_dont_resolve("10.in-addr.arpa"));
    }
}