From d39f7ab3fc3f75a2ea0c2284fe131783fdfb1332 Mon Sep 17 00:00:00 2001 From: Seth Hitchings Date: Fri, 27 Apr 2012 11:25:04 -0700 Subject: [PATCH] Allow digits in URL schemes per RFC --- .../java/org/scribe/utils/Preconditions.java | 4 +++- .../java/org/scribe/utils/PreconditionsTest.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/scribe/utils/Preconditions.java b/src/main/java/org/scribe/utils/Preconditions.java index d7a06c3..0ac134e 100644 --- a/src/main/java/org/scribe/utils/Preconditions.java +++ b/src/main/java/org/scribe/utils/Preconditions.java @@ -12,7 +12,9 @@ import org.scribe.model.OAuthConstants; public class Preconditions { private static final String DEFAULT_MESSAGE = "Received an invalid parameter"; - private static final Pattern URL_PATTERN = Pattern.compile("[a-zA-Z_-]+://\\S+"); + + // scheme = alpha *( alpha | digit | "+" | "-" | "." ) + private static final Pattern URL_PATTERN = Pattern.compile("^[a-zA-Z][a-zA-Z0-9+.-]*://\\S+"); /** * Checks that an object is not null. diff --git a/src/test/java/org/scribe/utils/PreconditionsTest.java b/src/test/java/org/scribe/utils/PreconditionsTest.java index 54ec9f8..84bc117 100644 --- a/src/test/java/org/scribe/utils/PreconditionsTest.java +++ b/src/test/java/org/scribe/utils/PreconditionsTest.java @@ -43,16 +43,25 @@ public class PreconditionsTest Preconditions.checkValidUrl(null, ERROR_MSG); } + @Test public void shouldAllowValidUrls() { Preconditions.checkValidUrl("http://www.example.com", ERROR_MSG); } + @Test public void shouldAllowSSLUrls() { Preconditions.checkValidUrl("https://www.example.com", ERROR_MSG); } + + @Test + public void shouldAllowSpecialCharsInScheme() + { + Preconditions.checkValidUrl("custom+9.3-1://www.example.com", ERROR_MSG); + } + @Test public void shouldAllowNonStandarProtocolsForAndroid() { Preconditions.checkValidUrl("x-url-custom://www.example.com", ERROR_MSG); @@ -64,6 +73,13 @@ public class PreconditionsTest Preconditions.checkValidUrl("$weird*://www.example.com", ERROR_MSG); } + @Test(expected = IllegalArgumentException.class) + public void shouldNotAllowUnderscoreInScheme() + { + Preconditions.checkValidUrl("http_custom://www.example.com", ERROR_MSG); + } + + @Test public void shouldAllowOutOfBandAsValidCallbackValue() { Preconditions.checkValidOAuthCallback("oob", ERROR_MSG);