diff options
Diffstat (limited to 'jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java')
-rw-r--r-- | jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java index da008c87b8..14d6eaf354 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 @@ -18,9 +18,7 @@ package org.eclipse.jetty.util; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import org.junit.Test; @@ -178,5 +176,33 @@ public class QuotedStringTokenizerTest assertEquals("ab\u001ec",QuotedStringTokenizer.unquote("ab\u001ec")); assertEquals("ab\u001ec",QuotedStringTokenizer.unquote("\"ab\u001ec\"")); } + + + @Test + public void testUnquoteOnly() + { + assertEquals("abc",QuotedStringTokenizer.unquoteOnly("abc")); + assertEquals("a\"c",QuotedStringTokenizer.unquoteOnly("\"a\\\"c\"")); + assertEquals("a'c",QuotedStringTokenizer.unquoteOnly("\"a'c\"")); + assertEquals("a\\n\\r\\t",QuotedStringTokenizer.unquoteOnly("\"a\\\\n\\\\r\\\\t\"")); + assertEquals("ba\\uXXXXaaa", QuotedStringTokenizer.unquoteOnly("\"ba\\\\uXXXXaaa\"")); + } + /** + * When encountering a Content-Disposition line during a multi-part mime file + * upload, the filename="..." field can contain '\' characters that do not + * belong to a proper escaping sequence, this tests QuotedStringTokenizer to + * ensure that it preserves those slashes for where they cannot be escaped. + */ + @Test + public void testNextTokenOnContentDisposition() + { + String content_disposition = "form-data; name=\"fileup\"; filename=\"Taken on Aug 22 \\ 2012.jpg\""; + + QuotedStringTokenizer tok=new QuotedStringTokenizer(content_disposition,";",false,true); + + assertEquals("form-data", tok.nextToken().trim()); + assertEquals("name=\"fileup\"", tok.nextToken().trim()); + assertEquals("filename=\"Taken on Aug 22 \\ 2012.jpg\"", tok.nextToken().trim()); + } } |