2 use warp::host::Authority;
6 let filter = warp::host::exact("known.com");
9 let req = warp::test::request();
10 assert!(req.filter(&filter).await.unwrap_err().is_not_found());
13 let req = warp::test::request().path("http://known.com/about-us");
14 assert!(req.filter(&filter).await.is_ok());
16 let req = warp::test::request().path("http://unknown.com/about-us");
17 assert!(req.filter(&filter).await.unwrap_err().is_not_found());
19 // specified in Host header
20 let req = warp::test::request()
21 .header("host", "known.com")
23 assert!(req.filter(&filter).await.is_ok());
25 let req = warp::test::request()
26 .header("host", "unknown.com")
28 assert!(req.filter(&filter).await.unwrap_err().is_not_found());
30 // specified in both - matching
31 let req = warp::test::request()
32 .header("host", "known.com")
33 .path("http://known.com/about-us");
34 assert!(req.filter(&filter).await.is_ok());
36 let req = warp::test::request()
37 .header("host", "unknown.com")
38 .path("http://unknown.com/about-us");
39 assert!(req.filter(&filter).await.unwrap_err().is_not_found());
41 // specified in both - mismatch
42 let req = warp::test::request()
43 .header("host", "known.com")
44 .path("http://known2.com/about-us");
49 .find::<warp::reject::InvalidHeader>()
52 // bad host header - invalid chars
53 let req = warp::test::request()
54 .header("host", "ðŸ˜")
55 .path("http://known.com/about-us");
60 .find::<warp::reject::InvalidHeader>()
63 // bad host header - invalid format
64 let req = warp::test::request()
65 .header("host", "hello space.com")
66 .path("http://known.com//about-us");
71 .find::<warp::reject::InvalidHeader>()
77 let filter = warp::host::optional();
79 let req = warp::test::request().header("host", "example.com");
81 req.filter(&filter).await.unwrap(),
82 Some(Authority::from_static("example.com"))
85 let req = warp::test::request();
86 assert_eq!(req.filter(&filter).await.unwrap(), None);