1 use super::*;
2
3 const DEMO_IP: &str = "1.2.3.4";
4
5 #[tokio::test]
test_resolver_standalone() -> Result<()>6 async fn test_resolver_standalone() -> Result<()> {
7 let mut r = Resolver::new();
8
9 // should have localhost by default
10 let name = "localhost";
11 let ip_addr = "127.0.0.1";
12 let ip = IpAddr::from_str(ip_addr)?;
13
14 if let Some(resolved) = r.lookup(name.to_owned()).await {
15 assert_eq!(resolved, ip, "should match");
16 } else {
17 panic!("should Some, but got None");
18 }
19
20 let name = "abc.com";
21 let ip_addr = DEMO_IP;
22 let ip = IpAddr::from_str(ip_addr)?;
23 log::debug!("adding {} {}", name, ip_addr);
24
25 r.add_host(name.to_owned(), ip_addr.to_owned())?;
26
27 if let Some(resolved) = r.lookup(name.to_owned()).await {
28 assert_eq!(resolved, ip, "should match");
29 } else {
30 panic!("should Some, but got None");
31 }
32
33 Ok(())
34 }
35
36 #[tokio::test]
test_resolver_cascaded() -> Result<()>37 async fn test_resolver_cascaded() -> Result<()> {
38 let mut r0 = Resolver::new();
39
40 let name0 = "abc.com";
41 let ip_addr0 = DEMO_IP;
42 let ip0 = IpAddr::from_str(ip_addr0)?;
43 r0.add_host(name0.to_owned(), ip_addr0.to_owned())?;
44
45 let mut r1 = Resolver::new();
46
47 let name1 = "myserver.local";
48 let ip_addr1 = "10.1.2.5";
49 let ip1 = IpAddr::from_str(ip_addr1)?;
50 r1.add_host(name1.to_owned(), ip_addr1.to_owned())?;
51
52 r1.set_parent(Arc::new(Mutex::new(r0)));
53
54 if let Some(resolved) = r1.lookup(name0.to_owned()).await {
55 assert_eq!(resolved, ip0, "should match");
56 } else {
57 panic!("should Some, but got None");
58 }
59
60 if let Some(resolved) = r1.lookup(name1.to_owned()).await {
61 assert_eq!(resolved, ip1, "should match");
62 } else {
63 panic!("should Some, but got None");
64 }
65
66 // should fail if the name does not exist
67 let result = r1.lookup("bad.com".to_owned()).await;
68 assert!(result.is_none(), "should fail");
69
70 Ok(())
71 }
72