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