|
|
|
@ -277,54 +277,23 @@ public class MimeTypeTests {
@@ -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()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 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()); |
|
|
|
|
@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=\"\\,\\\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|