diff --git a/features/src/main/scala/com/salesforce/op/features/types/Text.scala b/features/src/main/scala/com/salesforce/op/features/types/Text.scala index 5f308fe9eb..670b918fcd 100644 --- a/features/src/main/scala/com/salesforce/op/features/types/Text.scala +++ b/features/src/main/scala/com/salesforce/op/features/types/Text.scala @@ -38,6 +38,8 @@ import com.twitter.chill.Base64.{InputStream => Base64InputStream} import org.apache.commons.io.input.CharSequenceInputStream import org.apache.commons.validator.routines.UrlValidator +import scala.util.Try + /** * Text value representation * @@ -171,7 +173,7 @@ class URL(value: Option[String]) extends Text(value){ * RFC2396 (http://www.ietf.org/rfc/rfc2396.txt) * Default valid protocols are: http, https, ftp. */ - def isValid: Boolean = value.exists(UrlValidator.getInstance().isValid) + def isValid: Boolean = value.exists(v => UrlValidator.getInstance().isValid(v) && Try(new java.net.URL(v)).isSuccess) /** * Verifies if the url is of correct form of "Uniform Resource Identifiers (URI): Generic Syntax" * RFC2396 (http://www.ietf.org/rfc/rfc2396.txt) diff --git a/features/src/test/scala/com/salesforce/op/features/types/URLTest.scala b/features/src/test/scala/com/salesforce/op/features/types/URLTest.scala index ac5ca2736a..8f916a9eeb 100644 --- a/features/src/test/scala/com/salesforce/op/features/types/URLTest.scala +++ b/features/src/test/scala/com/salesforce/op/features/types/URLTest.scala @@ -48,7 +48,8 @@ class URLTest extends PropSpec with PropertyChecks with TestCommon { Some("ftp://.codomain"), Some("https://.codomain"), Some("//domain.nambia"), - Some("http://\u00ff\u0080\u007f\u0000.com") // scalastyle:off + Some("http://\u00ff\u0080\u007f\u0000.com"), // scalastyle:off + Some("http://specialchars.@.com") ) val goodOnes = Table("good ones",