|
| 1 | +extern crate wit_bindgen; |
| 2 | + |
| 3 | +wit_bindgen::generate!({ |
| 4 | + inline: r" |
| 5 | + package test:test; |
| 6 | +
|
| 7 | + world test { |
| 8 | + include wasi:http/imports@0.3.0-rc-2025-09-16; |
| 9 | + } |
| 10 | +", |
| 11 | + additional_derives: [PartialEq, Eq, Hash, Clone], |
| 12 | + features:["clocks-timezone"], |
| 13 | + generate_all |
| 14 | +}); |
| 15 | + |
| 16 | +use wasi::http::types::{ |
| 17 | + Fields, HeaderError, Response |
| 18 | +}; |
| 19 | + |
| 20 | +fn test_response_field_default_values(response: &Response) { |
| 21 | + assert_eq!(response.get_status_code(), 200); |
| 22 | +} |
| 23 | + |
| 24 | +fn test_status_codes(response: &Response) { |
| 25 | + for valid in [100, 101, |
| 26 | + 200, 201, 202, 203, 204, 205, 206, |
| 27 | + 300, 301, 302, 303, 304, 305, 306, 307, 308, |
| 28 | + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, |
| 29 | + 410, 411, 412, 413, 414, 415, 416, 417, |
| 30 | + 421, 422, 426, |
| 31 | + 500, 501, 502, 503, 504, 505] { |
| 32 | + assert_eq!(response.set_status_code(valid as u16), Ok(())); |
| 33 | + assert_eq!(response.get_status_code(), valid); |
| 34 | + } |
| 35 | + for invalid in [0, 42, 600, 1000, 69, 65535] { |
| 36 | + response.set_status_code(invalid as u16).unwrap_err(); |
| 37 | + } |
| 38 | +} |
| 39 | + |
| 40 | +fn test_immutable_headers(headers: &Fields) { |
| 41 | + assert_eq!(headers.append("Last-Modified", b"whatever"), |
| 42 | + Err(HeaderError::Immutable)); |
| 43 | +} |
| 44 | + |
| 45 | +fn test_headers_same(left: &Fields, right: &Fields) { |
| 46 | + assert_eq!(left.copy_all(), right.copy_all()); |
| 47 | +} |
| 48 | + |
| 49 | +fn main() { |
| 50 | + let headers = Fields::new(); |
| 51 | + // No field-specific syntax checks. |
| 52 | + headers.append("content-type", b"!!!! invalid").unwrap(); |
| 53 | + let contents = None; |
| 54 | + let (_, trailers_rx) = wit_future::new(|| Ok(None)); |
| 55 | + let headers_copy = headers.clone(); |
| 56 | + let (response, _sent_future) = Response::new(headers, contents, trailers_rx); |
| 57 | + |
| 58 | + test_response_field_default_values(&response); |
| 59 | + test_status_codes(&response); |
| 60 | + test_immutable_headers(&response.get_headers()); |
| 61 | + test_headers_same(&response.get_headers(), &headers_copy); |
| 62 | +} |
0 commit comments