Bug 1825052 [wpt PR 39246] - Update wpt metadata, a=testonly
[gecko.git] / third_party / rust / warp / tests / host.rs
blob2fb5f4247567ba9505f6c6013674d8ef124b923b
1 #![deny(warnings)]
2 use warp::host::Authority;
4 #[tokio::test]
5 async fn exact() {
6     let filter = warp::host::exact("known.com");
8     // no authority
9     let req = warp::test::request();
10     assert!(req.filter(&filter).await.unwrap_err().is_not_found());
12     // specified in URI
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")
22         .path("/about-us");
23     assert!(req.filter(&filter).await.is_ok());
25     let req = warp::test::request()
26         .header("host", "unknown.com")
27         .path("/about-us");
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");
45     assert!(req
46         .filter(&filter)
47         .await
48         .unwrap_err()
49         .find::<warp::reject::InvalidHeader>()
50         .is_some());
52     // bad host header - invalid chars
53     let req = warp::test::request()
54         .header("host", "😭")
55         .path("http://known.com/about-us");
56     assert!(req
57         .filter(&filter)
58         .await
59         .unwrap_err()
60         .find::<warp::reject::InvalidHeader>()
61         .is_some());
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");
67     assert!(req
68         .filter(&filter)
69         .await
70         .unwrap_err()
71         .find::<warp::reject::InvalidHeader>()
72         .is_some());
75 #[tokio::test]
76 async fn optional() {
77     let filter = warp::host::optional();
79     let req = warp::test::request().header("host", "example.com");
80     assert_eq!(
81         req.filter(&filter).await.unwrap(),
82         Some(Authority::from_static("example.com"))
83     );
85     let req = warp::test::request();
86     assert_eq!(req.filter(&filter).await.unwrap(), None);