HttpPostMultiPartRequestDecoderTest Class — netty Architecture
Architecture documentation for the HttpPostMultiPartRequestDecoderTest class in HttpPostMultiPartRequestDecoderTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 8ca6727e_4177_9097_12de_7bccb17e5dea["HttpPostMultiPartRequestDecoderTest"] b949ba9c_9ee2_af89_ec94_d864195a0242["HttpPostMultiPartRequestDecoderTest.java"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|defined in| b949ba9c_9ee2_af89_ec94_d864195a0242 49f671bd_9e70_525a_7952_de3bebf6795c["testDecodeFullHttpRequestWithNoContentTypeHeader()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 49f671bd_9e70_525a_7952_de3bebf6795c a7468de7_dd27_d0e2_838a_a87a453523a4["testDecodeFullHttpRequestWithInvalidCharset()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| a7468de7_dd27_d0e2_838a_a87a453523a4 0ce18672_ad0e_f898_bd7f_9893ce23b862["testDecodeFullHttpRequestWithInvalidPayloadReleaseBuffer()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 0ce18672_ad0e_f898_bd7f_9893ce23b862 3ed462e6_092a_55ad_9390_85dfe7b115a7["testDelimiterExceedLeftSpaceInCurrentBuffer()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 3ed462e6_092a_55ad_9390_85dfe7b115a7 7eb4c671_cbbe_57a8_2f8d_0880061c4803["commonTestBigFileDelimiterInMiddleChunk()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 7eb4c671_cbbe_57a8_2f8d_0880061c4803 7231f1f8_4457_2733_e62f_b1333e9aff80["testBIgFileUploadDelimiterInMiddleChunkDecoderDiskFactory()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 7231f1f8_4457_2733_e62f_b1333e9aff80 b7cbf6e2_a870_bcbe_c097_720ab9764ad4["testBIgFileUploadDelimiterInMiddleChunkDecoderMemoryFactory()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| b7cbf6e2_a870_bcbe_c097_720ab9764ad4 cdeb0206_1693_c03f_b392_2e5b08947c84["testBIgFileUploadDelimiterInMiddleChunkDecoderMixedFactory()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| cdeb0206_1693_c03f_b392_2e5b08947c84 a54bad25_e7e4_dc37_0fd4_58d812cd26f4["testNotBadReleaseBuffersDuringDecodingDiskFactory()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| a54bad25_e7e4_dc37_0fd4_58d812cd26f4 df98f65c_044f_e2d6_7fb4_338cec6f7840["testNotBadReleaseBuffersDuringDecodingMemoryFactory()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| df98f65c_044f_e2d6_7fb4_338cec6f7840 12ff4d2f_2755_6741_83da_810e2b5369a0["testNotBadReleaseBuffersDuringDecodingMixedFactory()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 12ff4d2f_2755_6741_83da_810e2b5369a0 7c4893a2_9344_1a93_02a9_80bd646bce12["testDecodeFullHttpRequestWithOptionalParameters()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 7c4893a2_9344_1a93_02a9_80bd646bce12 414441c4_b377_7258_e839_7d69f38ccd85["commonNotBadReleaseBuffersDuringDecoding()"] 8ca6727e_4177_9097_12de_7bccb17e5dea -->|method| 414441c4_b377_7258_e839_7d69f38ccd85
Relationship Graph
Source Code
codec-http/src/test/java/io/netty/handler/codec/http/multipart/HttpPostMultiPartRequestDecoderTest.java lines 43–513
public class HttpPostMultiPartRequestDecoderTest {
@Test
public void testDecodeFullHttpRequestWithNoContentTypeHeader() {
FullHttpRequest req = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "/");
try {
new HttpPostMultipartRequestDecoder(req);
fail("Was expecting an ErrorDataDecoderException");
} catch (HttpPostRequestDecoder.ErrorDataDecoderException expected) {
// expected
} finally {
assertTrue(req.release());
}
}
@Test
public void testDecodeFullHttpRequestWithInvalidCharset() {
FullHttpRequest req = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "/");
req.headers().set(HttpHeaderNames.CONTENT_TYPE,
"multipart/form-data; boundary=--89421926422648 [; charset=UTF-8]");
try {
new HttpPostMultipartRequestDecoder(req);
fail("Was expecting an ErrorDataDecoderException");
} catch (HttpPostRequestDecoder.ErrorDataDecoderException expected) {
// expected
} finally {
assertTrue(req.release());
}
}
@Test
public void testDecodeFullHttpRequestWithInvalidPayloadReleaseBuffer() {
String content = "\n--861fbeab-cd20-470c-9609-d40a0f704466\n" +
"Content-Disposition: form-data; name=\"image1\"; filename*=\"'some.jpeg\"\n" +
"Content-Type: image/jpeg\n" +
"Content-Length: 1\n" +
"x\n" +
"--861fbeab-cd20-470c-9609-d40a0f704466--\n";
FullHttpRequest req = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "/upload",
Unpooled.copiedBuffer(content, CharsetUtil.US_ASCII));
req.headers().set("content-type", "multipart/form-data; boundary=861fbeab-cd20-470c-9609-d40a0f704466");
req.headers().set("content-length", content.length());
try {
new HttpPostMultipartRequestDecoder(req);
fail("Was expecting an ErrorDataDecoderException");
} catch (HttpPostRequestDecoder.ErrorDataDecoderException expected) {
// expected
} finally {
assertTrue(req.release());
}
}
@Test
public void testDelimiterExceedLeftSpaceInCurrentBuffer() {
String delimiter = "--861fbeab-cd20-470c-9609-d40a0f704466";
String suffix = '\n' + delimiter + "--\n";
byte[] bsuffix = suffix.getBytes(CharsetUtil.UTF_8);
int partOfDelimiter = bsuffix.length / 2;
int bytesLastChunk = 355 - partOfDelimiter; // to try to have an out of bound since content is > delimiter
byte[] bsuffix1 = Arrays.copyOf(bsuffix, partOfDelimiter);
byte[] bsuffix2 = Arrays.copyOfRange(bsuffix, partOfDelimiter, bsuffix.length);
String prefix = delimiter + "\n" +
"Content-Disposition: form-data; name=\"image\"; filename=\"guangzhou.jpeg\"\n" +
"Content-Type: image/jpeg\n" +
"Content-Length: " + bytesLastChunk + "\n\n";
HttpRequest request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "/upload");
request.headers().set("content-type", "multipart/form-data; boundary=861fbeab-cd20-470c-9609-d40a0f704466");
request.headers().set("content-length", prefix.length() + bytesLastChunk + suffix.length());
// Factory using Memory mode
HttpDataFactory factory = new DefaultHttpDataFactory(false);
HttpPostMultipartRequestDecoder decoder = new HttpPostMultipartRequestDecoder(factory, request);
ByteBuf buf = Unpooled.wrappedBuffer(prefix.getBytes(CharsetUtil.UTF_8));
DefaultHttpContent httpContent = new DefaultHttpContent(buf);
decoder.offer(httpContent);
assertNotNull((HttpData) decoder.currentPartialHttpData());
httpContent.release();
// Chunk less than Delimiter size but containing part of delimiter
Source
Frequently Asked Questions
What is the HttpPostMultiPartRequestDecoderTest class?
HttpPostMultiPartRequestDecoderTest is a class in the netty codebase, defined in codec-http/src/test/java/io/netty/handler/codec/http/multipart/HttpPostMultiPartRequestDecoderTest.java.
Where is HttpPostMultiPartRequestDecoderTest defined?
HttpPostMultiPartRequestDecoderTest is defined in codec-http/src/test/java/io/netty/handler/codec/http/multipart/HttpPostMultiPartRequestDecoderTest.java at line 43.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free