You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2020/06/20 19:52:24 UTC

[commons-validator] branch master updated: VALIDATOR-302/449 Email leading & trailing spaces

This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git


The following commit(s) were added to refs/heads/master by this push:
     new a3c5da2  VALIDATOR-302/449 Email leading & trailing spaces
a3c5da2 is described below

commit a3c5da2d0e53003885a6af4875e40565a07b05a4
Author: Sebb <se...@apache.org>
AuthorDate: Sat Jun 20 20:52:15 2020 +0100

    VALIDATOR-302/449 Email leading & trailing spaces
---
 src/changes/changes.xml                                    |  6 ++++++
 .../apache/commons/validator/routines/EmailValidator.java  |  4 ++--
 src/test/java/org/apache/commons/validator/EmailTest.java  |  6 ++++--
 .../commons/validator/routines/EmailValidatorTest.java     | 14 +++++++++++---
 4 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a007282..a999caa 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -143,6 +143,12 @@ http://commons.apache.org/validator/dependencies.html
     <action issue="VALIDATOR-464" type="fix" dev="sebb" due-to="Sebastian Choina">
     UrlValidator says "file://bad ^ domain.com/label/test" is valid
     </action>
+    <action issue="VALIDATOR-449" type="fix" dev="sebb" due-to="Frederic Boutin">
+    Leading and trailing spaces in EmailValidator should not be valid
+    </action>
+    <action issue="VALIDATOR-302" type="fix" dev="sebb" due-to="Guido Zockoll">
+    EMailValidator: Addresses with leading spaces must not be accepted
+    </action>
   </release>
 
   <release version="1.6" date="2017-02-21" description="
diff --git a/src/main/java/org/apache/commons/validator/routines/EmailValidator.java b/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
index 91d56cf..51337d9 100644
--- a/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
@@ -42,9 +42,9 @@ public class EmailValidator implements Serializable {
     private static final String QUOTED_USER = "(\"(\\\\\"|[^\"])*\")";
     private static final String WORD = "((" + VALID_CHARS + "|')+|" + QUOTED_USER + ")";
 
-    private static final String EMAIL_REGEX = "^\\s*?(.+)@(.+?)\\s*$";
+    private static final String EMAIL_REGEX = "^(.+)@(\\S+)$";
     private static final String IP_DOMAIN_REGEX = "^\\[(.*)\\]$";
-    private static final String USER_REGEX = "^\\s*" + WORD + "(\\." + WORD + ")*$";
+    private static final String USER_REGEX = "^" + WORD + "(\\." + WORD + ")*$";
 
     private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX);
     private static final Pattern IP_DOMAIN_PATTERN = Pattern.compile(IP_DOMAIN_REGEX);
diff --git a/src/test/java/org/apache/commons/validator/EmailTest.java b/src/test/java/org/apache/commons/validator/EmailTest.java
index 09667e2..1216bd8 100644
--- a/src/test/java/org/apache/commons/validator/EmailTest.java
+++ b/src/test/java/org/apache/commons/validator/EmailTest.java
@@ -190,13 +190,15 @@ protected void setUp() throws IOException, SAXException {
         info.setValue("joeblow@ apache.org");
         valueTest(info, false);
         info.setValue(" joeblow@apache.org");
-        valueTest(info, true);
+        valueTest(info, false);
         info.setValue("joeblow@apache.org ");
-        valueTest(info, true);
+        valueTest(info, false);
         info.setValue("joe blow@apache.org ");
         valueTest(info, false);
         info.setValue("joeblow@apa che.org ");
         valueTest(info, false);
+        info.setValue("\"joe blow\"@apache.org");
+        valueTest(info, true);
 
     }
 
diff --git a/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java b/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java
index 8482aa5..0df9202 100644
--- a/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java
+++ b/src/test/java/org/apache/commons/validator/routines/EmailValidatorTest.java
@@ -178,18 +178,24 @@ protected void tearDown() {
     * Tests the email validation with spaces.
     */
     public void testEmailWithSpaces()  {
-        assertFalse(validator.isValid("joeblow @apache.org")); // TODO - this should be valid?
+        assertFalse(validator.isValid("joeblow @apache.org"));
 
         assertFalse(validator.isValid("joeblow@ apache.org"));
 
-        assertTrue(validator.isValid(" joeblow@apache.org")); // TODO - this should be valid?
+        assertFalse(validator.isValid(" joeblow@apache.org"));
 
-        assertTrue(validator.isValid("joeblow@apache.org "));
+        assertFalse(validator.isValid("joeblow@apache.org "));
 
         assertFalse(validator.isValid("joe blow@apache.org "));
 
         assertFalse(validator.isValid("joeblow@apa che.org "));
 
+        assertTrue(validator.isValid("\"joeblow \"@apache.org"));
+
+        assertTrue(validator.isValid("\" joeblow\"@apache.org"));
+
+        assertTrue(validator.isValid("\" joe blow \"@apache.org"));
+
     }
 
    /**
@@ -345,6 +351,8 @@ protected void tearDown() {
 
         assertTrue(validator.isValid("\"joe+\"@apache.org"));
 
+        assertTrue(validator.isValid("\"joe@\"@apache.org"));
+
         assertTrue(validator.isValid("\"joe!\"@apache.org"));
 
         assertTrue(validator.isValid("\"joe*\"@apache.org"));