Browse Source

Polishing contribution

Closes gh-27216
pull/27218/head
Rossen Stoyanchev 5 years ago
parent
commit
6c68419073
  1. 2
      spring-web/src/main/java/org/springframework/http/codec/multipart/SynchronossPartHttpMessageReader.java
  2. 38
      spring-web/src/test/java/org/springframework/http/codec/multipart/SynchronossPartHttpMessageReaderTests.java

2
spring-web/src/main/java/org/springframework/http/codec/multipart/SynchronossPartHttpMessageReader.java

@ -356,7 +356,7 @@ public class SynchronossPartHttpMessageReader extends LoggingCodecSupport implem @@ -356,7 +356,7 @@ public class SynchronossPartHttpMessageReader extends LoggingCodecSupport implem
this.isFilePart = (MultipartUtils.getFileName(headers) != null);
this.partSize = 0;
if (maxParts > 0 && index > maxParts) {
throw new DecodingException("Too many parts (" + index + "/" + maxParts + " allowed)");
throw new DecodingException("Too many parts: Part[" + index + "] but maxParts=" + maxParts);
}
return this.storageFactory.newStreamStorageForPartBody(headers, index);
}

38
spring-web/src/test/java/org/springframework/http/codec/multipart/SynchronossPartHttpMessageReaderTests.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2020 the original author or authors.
* Copyright 2002-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -165,37 +165,31 @@ public class SynchronossPartHttpMessageReaderTests extends AbstractLeakCheckingT @@ -165,37 +165,31 @@ public class SynchronossPartHttpMessageReaderTests extends AbstractLeakCheckingT
@Test
void readTooManyParts() {
testMultipartExceptions(reader -> reader.setMaxParts(1), ex -> {
assertThat(ex)
.isInstanceOf(DecodingException.class)
.hasMessageStartingWith("Failure while parsing part[2]");
assertThat(ex.getCause())
.hasMessage("Too many parts (2/1 allowed)");
}
testMultipartExceptions(reader -> reader.setMaxParts(1),
ex -> assertThat(ex)
.isInstanceOf(DecodingException.class)
.hasMessageStartingWith("Failure while parsing part[2]")
.hasRootCauseMessage("Too many parts: Part[2] but maxParts=1")
);
}
@Test
void readFilePartTooBig() {
testMultipartExceptions(reader -> reader.setMaxDiskUsagePerPart(5), ex -> {
assertThat(ex)
.isInstanceOf(DecodingException.class)
.hasMessageStartingWith("Failure while parsing part[1]");
assertThat(ex.getCause())
.hasMessage("Part[1] exceeded the disk usage limit of 5 bytes");
}
testMultipartExceptions(reader -> reader.setMaxDiskUsagePerPart(5),
ex -> assertThat(ex)
.isInstanceOf(DecodingException.class)
.hasMessageStartingWith("Failure while parsing part[1]")
.hasRootCauseMessage("Part[1] exceeded the disk usage limit of 5 bytes")
);
}
@Test
void readPartHeadersTooBig() {
testMultipartExceptions(reader -> reader.setMaxInMemorySize(1), ex -> {
assertThat(ex)
.isInstanceOf(DecodingException.class)
.hasMessageStartingWith("Failure while parsing part[1]");
assertThat(ex.getCause())
.hasMessage("Part[1] exceeded the in-memory limit of 1 bytes");
}
testMultipartExceptions(reader -> reader.setMaxInMemorySize(1),
ex -> assertThat(ex)
.isInstanceOf(DecodingException.class)
.hasMessageStartingWith("Failure while parsing part[1]")
.hasRootCauseMessage("Part[1] exceeded the in-memory limit of 1 bytes")
);
}

Loading…
Cancel
Save