Skip to content

Commit 57451cc

Browse files
authored
Merge pull request #169 from wingo/http-response
Add test for creating HTTP responses
2 parents 4e1963e + 5732f2c commit 57451cc

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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

Comments
 (0)