1 use test_programs::wasi::http::types::{HeaderError, Headers, OutgoingRequest};
2 
main()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