Skip to content

Commit 0550c56

Browse files
committed
test: body-plz - chunked
1 parent 9d77218 commit 0550c56

File tree

3 files changed

+97
-1
lines changed

3 files changed

+97
-1
lines changed

body-plz/src/reader/chunked_reader.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,16 +488,38 @@ pub(crate) mod tests {
488488
}
489489

490490
#[test]
491-
fn test_get_size() {
491+
fn test_mark_size_chunk_true() {
492492
let data = "7\r\n";
493493
let mut buf = BytesMut::from(data);
494494
let mut cbuf = Cursor::new(&mut buf);
495495
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
496496
assert!(result);
497+
assert_eq!(cbuf.position(), 1);
497498
let size = ChunkReaderState::try_get_size(&mut cbuf).unwrap();
498499
assert_eq!(size, 7);
499500
}
500501

502+
#[test]
503+
fn test_mark_size_chunk_true_with_extension() {
504+
let data = "7; hola amigo\r\n";
505+
let mut buf = BytesMut::from(data);
506+
let mut cbuf = Cursor::new(&mut buf);
507+
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
508+
assert!(result);
509+
assert_eq!(cbuf.position(), data.len() - 2);
510+
let size = ChunkReaderState::try_get_size(&mut cbuf).unwrap();
511+
assert_eq!(size, 7);
512+
}
513+
514+
#[test]
515+
fn test_mark_size_chunk_false() {
516+
let data = "7\r";
517+
let mut buf = BytesMut::from(data);
518+
let mut cbuf = Cursor::new(&mut buf);
519+
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
520+
assert!(!result);
521+
}
522+
501523
#[test]
502524
fn test_chunked_reader_extra_data() {
503525
let data = "\r\n\

body-plz/src/variants/chunked.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,32 @@ mod tests {
8181
chunk_vec
8282
}
8383

84+
#[test]
85+
fn test_chunk_type_len() {
86+
let buf = BytesMut::from("data\r\n");
87+
let size_chunk = ChunkType::Size(buf.clone());
88+
assert_eq!(size_chunk.len(), 6);
89+
90+
let chunk = ChunkType::Chunk(buf.clone());
91+
assert_eq!(chunk.len(), 6);
92+
93+
let extra = ChunkType::Extra(buf.clone());
94+
assert_eq!(extra.len(), 6);
95+
96+
let last_chunk = ChunkType::LastChunk(buf.clone());
97+
assert_eq!(last_chunk.len(), 3);
98+
99+
let end_crlf = ChunkType::EndCRLF(buf.clone());
100+
assert_eq!(end_crlf.len(), 2);
101+
102+
let raw_headers = "content-type: application/json\r\n\
103+
content-encoding: gzip\r\n\r\n";
104+
105+
let header_map = HeaderMap::from(BytesMut::from(raw_headers));
106+
let trailers = ChunkType::Trailers(header_map);
107+
assert_eq!(trailers.len(), 58);
108+
}
109+
84110
#[test]
85111
fn test_total_chunk_size() {
86112
let buf = BytesMut::from("data\r\n");

body-plz/src/variants/mod.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,51 @@ impl Body {
3434
}
3535
}
3636
}
37+
38+
#[cfg(test)]
39+
mod tests {
40+
use super::*;
41+
42+
#[test]
43+
fn test_variants_body_push_chunk() {
44+
let mut body = Body::Chunked(Vec::new());
45+
let buf = BytesMut::from("data\r\n");
46+
body.push_chunk(ChunkType::Chunk(buf.clone()));
47+
assert_eq!(body, Body::Chunked(vec![ChunkType::Chunk(buf.clone())]));
48+
49+
body.push_chunk(ChunkType::Size(buf.clone()));
50+
assert_eq!(
51+
body,
52+
Body::Chunked(vec![
53+
ChunkType::Chunk(buf.clone()),
54+
ChunkType::Size(buf.clone())
55+
])
56+
);
57+
}
58+
59+
#[test]
60+
fn test_variants_body_into_bytes_raw() {
61+
let buf = BytesMut::from("data\r\n");
62+
let body = Body::Raw(buf.clone());
63+
assert_eq!(body.into_bytes(), Some(buf));
64+
}
65+
66+
#[test]
67+
fn test_variants_body_into_bytes_chunk() {
68+
let body = Body::Chunked(Vec::new());
69+
assert_eq!(body.into_bytes(), None);
70+
}
71+
72+
#[test]
73+
fn test_variants_body_into_chunks_raw() {
74+
let body = Body::Raw(BytesMut::from("data\r\n"));
75+
assert_eq!(body.into_chunks(), Vec::new());
76+
}
77+
78+
#[test]
79+
fn test_variants_body_into_chunks_chunk() {
80+
let buf = BytesMut::from("data\r\n");
81+
let body = Body::Chunked(vec![ChunkType::Chunk(buf.clone())]);
82+
assert_eq!(body.into_chunks(), vec![ChunkType::Chunk(buf.clone())]);
83+
}
84+
}

0 commit comments

Comments
 (0)