Skip to content

Commit 5aebf0b

Browse files
authored
p3(http): Assert header immutability via delete, get_and_delete (#271)
This commit asserts that headers cannot be mutated via `delete` and `get_and_delete`.
1 parent 0a1ce7f commit 5aebf0b

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

tests/rust/wasm32-wasip3/src/bin/http-request.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,15 @@ fn test_immutable_headers(headers: &Fields) {
245245
headers.append("Last-Modified", b"whatever"),
246246
Err(HeaderError::Immutable)
247247
);
248+
assert_eq!(
249+
headers.set("Last-Modified", &[b"whatever".to_vec()]),
250+
Err(HeaderError::Immutable)
251+
);
252+
let all = headers.copy_all();
253+
if let Some((name, _)) = all.first() {
254+
assert_eq!(headers.delete(name), Err(HeaderError::Immutable));
255+
assert_eq!(headers.get_and_delete(name), Err(HeaderError::Immutable));
256+
}
248257
}
249258

250259
fn test_headers_same(left: &Fields, right: &Fields) {

tests/rust/wasm32-wasip3/src/bin/http-response.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ fn test_immutable_headers(headers: &Fields) {
2727
headers.append("Last-Modified", b"whatever"),
2828
Err(HeaderError::Immutable)
2929
);
30+
assert_eq!(
31+
headers.set("Last-Modified", &[b"whatever".to_vec()]),
32+
Err(HeaderError::Immutable)
33+
);
34+
let all = headers.copy_all();
35+
if let Some((name, _)) = all.first() {
36+
assert_eq!(headers.delete(name), Err(HeaderError::Immutable));
37+
assert_eq!(headers.get_and_delete(name), Err(HeaderError::Immutable));
38+
}
3039
}
3140

3241
fn test_headers_same(left: &Fields, right: &Fields) {

0 commit comments

Comments
 (0)