Refactor media types parsing improvements
Issue: SPR-17459
This commit is contained in:
@@ -277,54 +277,23 @@ public class MimeTypeTests {
|
||||
assertEquals("Invalid amount of mime types", 0, mimeTypes.size());
|
||||
}
|
||||
|
||||
// SPR-17459
|
||||
@Test
|
||||
public void parseMimeTypesWithOddNumberOfDoubleQuotedCommas() {
|
||||
String s = "foo/bar;param=\",\"";
|
||||
List<MimeType> mimeTypes = MimeTypeUtils.parseMimeTypes(s);
|
||||
assertEquals("Invalid amount of mime types", 1, mimeTypes.size());
|
||||
assertEquals("Comma should be part of the mime type", s, mimeTypes.get(0).toString());
|
||||
@Test // SPR-17459
|
||||
public void parseMimeTypesWithQuotedParameters() {
|
||||
testWithQuotedParameters("foo/bar;param=\",\"");
|
||||
testWithQuotedParameters("foo/bar;param=\"s,a,\"");
|
||||
testWithQuotedParameters("foo/bar;param=\"s,\"", "text/x-c");
|
||||
testWithQuotedParameters("foo/bar;param=\"a\\\"b,c\"");
|
||||
testWithQuotedParameters("foo/bar;param=\"\\\\\"");
|
||||
testWithQuotedParameters("foo/bar;param=\"\\,\\\"");
|
||||
}
|
||||
|
||||
// SPR-17459
|
||||
@Test
|
||||
public void parseMimeTypesWithEvenNumberOfDoubleQuotedCommas() {
|
||||
String s = "foo/bar;param=\"s,a,\"";
|
||||
List<MimeType> mimeTypes = MimeTypeUtils.parseMimeTypes(s);
|
||||
assertEquals("Invalid amount of mime types", 1, mimeTypes.size());
|
||||
assertEquals("Comma should be part of the mime type", s, mimeTypes.get(0).toString());
|
||||
}
|
||||
|
||||
// SPR-17459
|
||||
@Test
|
||||
public void parseMimeTypesWithAndWithoutDoubleQuotedCommas() {
|
||||
String s = "foo/bar;param=\"s,\", text/x-c";
|
||||
List<MimeType> mimeTypes = MimeTypeUtils.parseMimeTypes(s);
|
||||
assertEquals("Invalid amount of mime types", 2, mimeTypes.size());
|
||||
assertEquals("Comma should be part of the mime type", "foo/bar;param=\"s,\"", mimeTypes.get(0).toString());
|
||||
}
|
||||
|
||||
// SPR-17459
|
||||
@Test
|
||||
public void parseMimeTypesIgnoreEscapedDoubleQuoteWithinDoubleQuotes() {
|
||||
String s = "foo/bar;param=\"a\\\"b,c\"";
|
||||
List<MimeType> mimeTypes = MimeTypeUtils.parseMimeTypes(s);
|
||||
assertEquals("Invalid amount of mime types", 1, mimeTypes.size());
|
||||
assertEquals("Escaped quote within quotes should be ignored when considering comma tokenization", s, mimeTypes.get(0).toString());
|
||||
}
|
||||
|
||||
// SPR-17459
|
||||
@Test
|
||||
public void parseMimeTypesIgnoreEscapedBackslash() {
|
||||
String s = "foo/bar;param=\"\\\\\"";
|
||||
List<MimeType> mimeTypes = MimeTypeUtils.parseMimeTypes(s);
|
||||
assertEquals("Invalid amount of mime types", 1, mimeTypes.size());
|
||||
assertEquals("Escaped backslash should be ignored when considering comma tokenization", s, mimeTypes.get(0).toString());
|
||||
|
||||
s = "foo/bar;param=\"\\,\\\"";
|
||||
mimeTypes = MimeTypeUtils.parseMimeTypes(s);
|
||||
assertEquals("Invalid amount of mime types", 1, mimeTypes.size());
|
||||
assertEquals("Escaped backslash should be ignored when considering comma tokenization", s, mimeTypes.get(0).toString());
|
||||
private void testWithQuotedParameters(String... mimeTypes) {
|
||||
String s = String.join(",", mimeTypes);
|
||||
List<MimeType> actual = MimeTypeUtils.parseMimeTypes(s);
|
||||
assertEquals(mimeTypes.length, actual.size());
|
||||
for (int i=0; i < mimeTypes.length; i++) {
|
||||
assertEquals(mimeTypes[i], actual.get(i).toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user