1*6f6a514bSRoman Volosatovs use test_programs::p3::wasi::http::types::{ErrorCode, Method, Scheme};
2*6f6a514bSRoman Volosatovs 
3*6f6a514bSRoman Volosatovs struct Component;
4*6f6a514bSRoman Volosatovs 
5*6f6a514bSRoman Volosatovs test_programs::p3::export!(Component);
6*6f6a514bSRoman Volosatovs 
7*6f6a514bSRoman Volosatovs impl test_programs::p3::exports::wasi::cli::run::Guest for Component {
run() -> Result<(), ()>8*6f6a514bSRoman Volosatovs     async fn run() -> Result<(), ()> {
9*6f6a514bSRoman Volosatovs         let addr = test_programs::p3::wasi::cli::environment::get_environment()
10*6f6a514bSRoman Volosatovs             .into_iter()
11*6f6a514bSRoman Volosatovs             .find_map(|(k, v)| k.eq("HTTP_SERVER").then_some(v))
12*6f6a514bSRoman Volosatovs             .unwrap();
13*6f6a514bSRoman Volosatovs         let res = test_programs::p3::http::request(
14*6f6a514bSRoman Volosatovs             Method::Connect,
15*6f6a514bSRoman Volosatovs             Scheme::Http,
16*6f6a514bSRoman Volosatovs             &addr,
17*6f6a514bSRoman Volosatovs             "/",
18*6f6a514bSRoman Volosatovs             None,
19*6f6a514bSRoman Volosatovs             Some(&[]),
20*6f6a514bSRoman Volosatovs             None,
21*6f6a514bSRoman Volosatovs             None,
22*6f6a514bSRoman Volosatovs             None,
23*6f6a514bSRoman Volosatovs         )
24*6f6a514bSRoman Volosatovs         .await;
25*6f6a514bSRoman Volosatovs 
26*6f6a514bSRoman Volosatovs         assert!(matches!(
27*6f6a514bSRoman Volosatovs             res.unwrap_err()
28*6f6a514bSRoman Volosatovs                 .downcast::<ErrorCode>()
29*6f6a514bSRoman Volosatovs                 .expect("expected a wasi-http ErrorCode"),
30*6f6a514bSRoman Volosatovs             ErrorCode::HttpProtocolError,
31*6f6a514bSRoman Volosatovs         ));
32*6f6a514bSRoman Volosatovs         Ok(())
33*6f6a514bSRoman Volosatovs     }
34*6f6a514bSRoman Volosatovs }
35*6f6a514bSRoman Volosatovs 
main()36*6f6a514bSRoman Volosatovs fn main() {}
37