X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fhttp.rs;h=944bea1d2c07acd637bd62b6f71d043119217a4c;hb=e4503cf90b6ad5ed9edc99389956ceffb1c35502;hp=53a0b18a71e3ba38615c37fb84d36fd9320170be;hpb=974fe2805f8a34d0fa88c05c2374ed69c51d7674;p=dnssec-prover diff --git a/src/http.rs b/src/http.rs index 53a0b18..944bea1 100644 --- a/src/http.rs +++ b/src/http.rs @@ -5,11 +5,13 @@ extern crate alloc; pub mod rr; -pub mod validation; -mod ser; +pub mod ser; pub mod query; -#[cfg(feature = "tokio")] +#[cfg(feature = "validation")] +pub mod validation; + +#[cfg(any(feature = "build_server", all(feature = "tokio", feature = "validation")))] use tokio_crate as tokio; #[cfg(feature = "build_server")] @@ -26,7 +28,7 @@ async fn main() { imp::run_server(listener, resolver_sockaddr).await; } -#[cfg(feature = "tokio")] +#[cfg(any(feature = "build_server", all(feature = "tokio", feature = "validation")))] mod imp { use super::*; @@ -134,7 +136,7 @@ mod imp { } } -#[cfg(all(feature = "tokio", test))] +#[cfg(all(feature = "tokio", feature = "validation", test))] mod test { use super::*; @@ -157,4 +159,36 @@ mod test { let verified_rrs = verify_rr_stream(&rrs).unwrap(); assert_eq!(verified_rrs.verified_rrs.len(), 1); } + + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_lookup_a() { + let ns = "4.4.4.4:53".parse().unwrap(); + let listener = tokio::net::TcpListener::bind("127.0.0.1:17493").await + .expect("Failed to bind to socket"); + tokio::spawn(imp::run_server(listener, ns)); + let resp = minreq::get( + "http://127.0.0.1:17493/dnssecproof?d=cloudflare.com.&t=a" + ).send().unwrap(); + + assert_eq!(resp.status_code, 200); + let rrs = parse_rr_stream(resp.as_bytes()).unwrap(); + let verified_rrs = verify_rr_stream(&rrs).unwrap(); + assert_eq!(verified_rrs.verified_rrs.len(), 1); + } + + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_lookup_tlsa() { + let ns = "1.1.1.1:53".parse().unwrap(); + let listener = tokio::net::TcpListener::bind("127.0.0.1:17494").await + .expect("Failed to bind to socket"); + tokio::spawn(imp::run_server(listener, ns)); + let resp = minreq::get( + "http://127.0.0.1:17494/dnssecproof?d=_25._tcp.mail.as397444.net.&t=TLSA" + ).send().unwrap(); + + assert_eq!(resp.status_code, 200); + let rrs = parse_rr_stream(resp.as_bytes()).unwrap(); + let verified_rrs = verify_rr_stream(&rrs).unwrap(); + assert_eq!(verified_rrs.verified_rrs.len(), 1); + } }