1#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support direct socket operations
2
3use tokio::net;
4use tokio_test::assert_ok;
5
6use std::io;
7use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
8
9#[tokio::test]
10async fn lookup_socket_addr() {
11 let addr: SocketAddr = "127.0.0.1:8000".parse().unwrap();
12
13 let actual = assert_ok!(net::lookup_host(addr).await).collect::<Vec<_>>();
14 assert_eq!(vec![addr], actual);
15}
16
17#[tokio::test]
18async fn lookup_str_socket_addr() {
19 let addr: SocketAddr = "127.0.0.1:8000".parse().unwrap();
20
21 let actual = assert_ok!(net::lookup_host("127.0.0.1:8000").await).collect::<Vec<_>>();
22 assert_eq!(vec![addr], actual);
23}
24
25#[tokio::test]
26async fn resolve_dns() -> io::Result<()> {
27 let mut hosts = net::lookup_host("localhost:3000").await?;
28 let host = hosts.next().unwrap();
29
30 let expected = if host.is_ipv4() {
31 SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 3000)
32 } else {
33 SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)), 3000)
34 };
35 assert_eq!(host, expected);
36
37 Ok(())
38}
39