From 50c35bc6860a1cfb378153e431ce5f1b56b74332 Mon Sep 17 00:00:00 2001 From: Pablo Fernandez Date: Fri, 17 Sep 2010 23:22:16 -0300 Subject: [PATCH] Changed whitespace encoding to %21 instead of '+' Changed version number for release --- src/main/java/org/scribe/utils/URLUtils.java | 2 +- .../org/scribe/extractors/BaseStringExtractorTest.java | 8 ++++++++ src/test/java/org/scribe/model/RequestTest.java | 2 +- src/test/java/org/scribe/utils/URLUtilsTest.java | 4 ++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/scribe/utils/URLUtils.java b/src/main/java/org/scribe/utils/URLUtils.java index 2603094..11dbc1a 100644 --- a/src/main/java/org/scribe/utils/URLUtils.java +++ b/src/main/java/org/scribe/utils/URLUtils.java @@ -41,7 +41,7 @@ public class URLUtils Preconditions.checkNotNull(string, "Cannot encode null string"); try { - return URLEncoder.encode(string, UTF_8); + return URLEncoder.encode(string, UTF_8).replaceAll("\\+", "%20"); } catch (UnsupportedEncodingException uee) { diff --git a/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java b/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java index d140c3a..b145592 100644 --- a/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java +++ b/src/test/java/org/scribe/extractors/BaseStringExtractorTest.java @@ -41,4 +41,12 @@ public class BaseStringExtractorTest OAuthRequest request = new OAuthRequest(Verb.GET, "http://example.com"); extractor.extract(request); } + + @Test + public void shouldProperlyEncodeSpaces() + { + String expected = "GET&http%3A%2F%2Fexample.com&body%3Dthis%2520param%2520has%2520whitespace%26oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E*%2540%2526%26oauth_signature%3DOAuth-Signature%26oauth_timestamp%3D123456"; + request.addBodyParameter("body", "this param has whitespace"); + assertEquals(expected, extractor.extract(request)); + } } diff --git a/src/test/java/org/scribe/model/RequestTest.java b/src/test/java/org/scribe/model/RequestTest.java index 6356177..4034699 100644 --- a/src/test/java/org/scribe/model/RequestTest.java +++ b/src/test/java/org/scribe/model/RequestTest.java @@ -52,7 +52,7 @@ public class RequestTest postRequest.addBodyParameter("param", "value"); postRequest.addBodyParameter("param two", "value with spaces"); postRequest.send(); - assertEquals("param+two=value+with+spaces¶m=value", postRequest.getBodyContents()); + assertEquals("param%20two=value%20with%20spaces¶m=value", postRequest.getBodyContents()); assertTrue(connection.getHeaders().containsKey("Content-Length")); } diff --git a/src/test/java/org/scribe/utils/URLUtilsTest.java b/src/test/java/org/scribe/utils/URLUtilsTest.java index 426c2c0..eae99e5 100644 --- a/src/test/java/org/scribe/utils/URLUtilsTest.java +++ b/src/test/java/org/scribe/utils/URLUtilsTest.java @@ -23,7 +23,7 @@ public class URLUtilsTest params.put("key with spaces", "value with spaces"); params.put("&symbols!", "#!"); - String expected = "key=value&key+with+spaces=value+with+spaces&%26symbols%21=%23%21"; + String expected = "key=value&key%20with%20spaces=value%20with%20spaces&%26symbols%21=%23%21"; assertEquals(expected, URLUtils.formURLEncodeMap(params)); } @@ -39,7 +39,7 @@ public class URLUtilsTest public void shouldPercentEncodeString() { String toEncode = "this is a test &^"; - String expected = "this+is+a+test+%26%5E"; + String expected = "this%20is%20a%20test%20%26%5E"; assertEquals(expected, URLUtils.percentEncode(toEncode)); }