1 use test_programs::wasi::http::types::{HeaderError, Headers, OutgoingRequest}; 2 3 fn main() { 4 let hdrs = Headers::new(); 5 assert!(matches!( 6 hdrs.append("malformed header name", b"ok value".as_ref()), 7 Err(HeaderError::InvalidSyntax) 8 )); 9 10 assert!(matches!( 11 hdrs.append("ok-header-name", b"ok value".as_ref()), 12 Ok(()) 13 )); 14 15 assert!(matches!( 16 hdrs.append("ok-header-name", b"bad\nvalue".as_ref()), 17 Err(HeaderError::InvalidSyntax) 18 )); 19 20 assert!(matches!( 21 hdrs.append("Connection", b"keep-alive".as_ref()), 22 Err(HeaderError::Forbidden) 23 )); 24 25 assert!(matches!( 26 hdrs.append("Keep-Alive", b"stuff".as_ref()), 27 Err(HeaderError::Forbidden) 28 )); 29 30 assert!(matches!( 31 hdrs.append("Host", b"example.com".as_ref()), 32 Err(HeaderError::Forbidden) 33 )); 34 35 assert!(matches!( 36 hdrs.append("custom-forbidden-header", b"keep-alive".as_ref()), 37 Err(HeaderError::Forbidden) 38 )); 39 40 assert!(matches!( 41 hdrs.append("Custom-Forbidden-Header", b"keep-alive".as_ref()), 42 Err(HeaderError::Forbidden) 43 )); 44 45 assert!(matches!( 46 Headers::from_list(&[("bad header".to_owned(), b"value".to_vec())]), 47 Err(HeaderError::InvalidSyntax) 48 )); 49 50 assert!(matches!( 51 Headers::from_list(&[("custom-forbidden-header".to_owned(), b"value".to_vec())]), 52 Err(HeaderError::Forbidden) 53 )); 54 55 assert!(matches!( 56 Headers::from_list(&[("ok-header-name".to_owned(), b"bad\nvalue".to_vec())]), 57 Err(HeaderError::InvalidSyntax) 58 )); 59 60 let req = OutgoingRequest::new(hdrs); 61 let hdrs = req.headers(); 62 63 assert!(matches!( 64 hdrs.set("Content-Length", &[b"10".to_vec()]), 65 Err(HeaderError::Immutable), 66 )); 67 68 assert!(matches!( 69 hdrs.append("Content-Length", b"10".as_ref()), 70 Err(HeaderError::Immutable), 71 )); 72 73 assert!(matches!( 74 hdrs.delete("Content-Length"), 75 Err(HeaderError::Immutable), 76 )); 77 } 78