HttpPostRequestDecoderTest Class — netty Architecture
Architecture documentation for the HttpPostRequestDecoderTest class in HttpPostRequestDecoderTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD d3dadcbe_07b1_86dc_3f34_5a56e9d1367e["HttpPostRequestDecoderTest"] 1e066d23_cbcb_feab_161a_d1bcbf03b653["HttpPostRequestDecoderTest.java"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|defined in| 1e066d23_cbcb_feab_161a_d1bcbf03b653 d908db45_2339_97de_ef92_b48161642fb3["testBinaryStreamUploadWithSpace()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| d908db45_2339_97de_ef92_b48161642fb3 445a1fc6_faad_ab3a_cf84_51d1bd35a4d2["testBinaryStreamUploadWithoutSpace()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 445a1fc6_faad_ab3a_cf84_51d1bd35a4d2 112fcd5b_618f_8555_ad55_5311bffa0b94["testBinaryStreamUpload()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 112fcd5b_618f_8555_ad55_5311bffa0b94 fb706f96_ad40_aefb_235e_02b8536ffe05["testFullHttpRequestUpload()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| fb706f96_ad40_aefb_235e_02b8536ffe05 015c1b58_a0a6_08a3_b1cb_0667ce054c53["testMultipartCodecWithCRasEndOfAttribute()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 015c1b58_a0a6_08a3_b1cb_0667ce054c53 03672b83_bc1e_6747_1ec7_2883643e9986["testQuotedBoundary()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 03672b83_bc1e_6747_1ec7_2883643e9986 0ae5feb5_b49f_059e_d6ab_a074478c96b3["testNoZeroOut()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 0ae5feb5_b49f_059e_d6ab_a074478c96b3 9de6884f_ea55_c1ba_9164_2b857a6a0337["testChunkCorrect()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 9de6884f_ea55_c1ba_9164_2b857a6a0337 291e943e_722a_eab0_0f2f_86b611bbaf62["testFilenameContainingSemicolon()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 291e943e_722a_eab0_0f2f_86b611bbaf62 d38a11c4_54f9_eb68_db60_781ebb1caf4c["testFilenameContainingSemicolon2()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| d38a11c4_54f9_eb68_db60_781ebb1caf4c 495c130e_d7e4_1e86_6555_6cc66ead7b83["testMultipartRequestWithoutContentTypeBody()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 495c130e_d7e4_1e86_6555_6cc66ead7b83 c98b9e82_118e_a354_f5b5_854176035de6["testDecodeOtherMimeHeaderFields()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| c98b9e82_118e_a354_f5b5_854176035de6 7adce0e9_851f_86a2_287a_6159a8c7f830["testMultipartRequestWithFileInvalidCharset()"] d3dadcbe_07b1_86dc_3f34_5a56e9d1367e -->|method| 7adce0e9_851f_86a2_287a_6159a8c7f830
Relationship Graph
Source Code
codec-http/src/test/java/io/netty/handler/codec/http/multipart/HttpPostRequestDecoderTest.java lines 54–1145
public class HttpPostRequestDecoderTest {
@Test
public void testBinaryStreamUploadWithSpace() throws Exception {
testBinaryStreamUpload(true);
}
// https://github.com/netty/netty/issues/1575
@Test
public void testBinaryStreamUploadWithoutSpace() throws Exception {
testBinaryStreamUpload(false);
}
private static void testBinaryStreamUpload(boolean withSpace) throws Exception {
final String boundary = "dLV9Wyq26L_-JQxk6ferf-RT153LhOO";
final String contentTypeValue;
if (withSpace) {
contentTypeValue = "multipart/form-data; boundary=" + boundary;
} else {
contentTypeValue = "multipart/form-data;boundary=" + boundary;
}
final DefaultHttpRequest req = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST,
"http://localhost");
req.setDecoderResult(DecoderResult.SUCCESS);
req.headers().add(HttpHeaderNames.CONTENT_TYPE, contentTypeValue);
req.headers().add(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
// Force to use memory-based data.
final DefaultHttpDataFactory inMemoryFactory = new DefaultHttpDataFactory(false);
for (String data : Arrays.asList("", "\r", "\r\r", "\r\r\r")) {
final String body =
"--" + boundary + "\r\n" +
"Content-Disposition: form-data; name=\"file\"; filename=\"tmp-0.txt\"\r\n" +
"Content-Type: image/gif\r\n" +
"\r\n" +
data + "\r\n" +
"--" + boundary + "--\r\n";
// Create decoder instance to test.
final HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(inMemoryFactory, req);
ByteBuf buf = Unpooled.copiedBuffer(body, CharsetUtil.UTF_8);
decoder.offer(new DefaultHttpContent(buf));
decoder.offer(new DefaultHttpContent(Unpooled.EMPTY_BUFFER));
// Validate it's enough chunks to decode upload.
assertTrue(decoder.hasNext());
// Decode binary upload.
MemoryFileUpload upload = (MemoryFileUpload) decoder.next();
// Validate data has been parsed correctly as it was passed into request.
assertEquals(data, upload.getString(CharsetUtil.UTF_8),
"Invalid decoded data [data=" + data.replaceAll("\r", "\\\\r") + ", upload=" + upload + ']');
upload.release();
decoder.destroy();
buf.release();
}
}
// See https://github.com/netty/netty/issues/1089
@Test
public void testFullHttpRequestUpload() throws Exception {
final String boundary = "dLV9Wyq26L_-JQxk6ferf-RT153LhOO";
final DefaultFullHttpRequest req = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST,
"http://localhost");
req.setDecoderResult(DecoderResult.SUCCESS);
req.headers().add(HttpHeaderNames.CONTENT_TYPE, "multipart/form-data; boundary=" + boundary);
req.headers().add(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
// Force to use memory-based data.
final DefaultHttpDataFactory inMemoryFactory = new DefaultHttpDataFactory(false);
for (String data : Arrays.asList("", "\r", "\r\r", "\r\r\r")) {
final String body =
"--" + boundary + "\r\n" +
"Content-Disposition: form-data; name=\"file\"; filename=\"tmp-0.txt\"\r\n" +
Defined In
Source
Frequently Asked Questions
What is the HttpPostRequestDecoderTest class?
HttpPostRequestDecoderTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/multipart/HttpPostRequestDecoderTest.java.
Where is HttpPostRequestDecoderTest defined?
HttpPostRequestDecoderTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/multipart/HttpPostRequestDecoderTest.java at line 54.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free