be more stringent on email validation rules

add UT to validate various email formats
This commit is contained in:
ftiercelin 2024-10-08 19:30:12 +01:00
parent 474f4bb5a0
commit 12ba71f8d7
2 changed files with 21 additions and 3 deletions

View file

@ -29,8 +29,8 @@ import java.util.regex.Pattern;
*/
public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser {
private static final Pattern ATEXT_ALPHANUMERIC = Pattern.compile("[a-zA-Z0-9@.!#$%&'*+\\-/=?^_`{|}~]+");
private static final Pattern EMAIL = Pattern.compile("^[^:]+@([0-9a-zA-Z\\\\-]+\\.)+[0-9a-zA-Z\\\\-]{2,}$");
@Override
public EmailAddressParsedResult parse(Result result) {
String rawText = getMassagedText(result);
@ -58,7 +58,7 @@ public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser {
* in a barcode, not "judge" it.
*/
static boolean isBasicallyValidEmailAddress(String email) {
return email != null && ATEXT_ALPHANUMERIC.matcher(email).matches() && email.indexOf('@') >= 0;
return email != null && EMAIL.matcher(email).matches();
}
}

View file

@ -28,12 +28,30 @@ import org.junit.Test;
*/
public final class EmailAddressParsedResultTestCase extends Assert {
@Test
public void testEmailAddresses() {
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress(null));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress(""));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123.365.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("abc.def.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@abcd.c"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab,cd.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab#cd.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab!#cd.com"));
assertFalse(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab_cd.com"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@abcd.com"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("123@ab-cd.com"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("abc.456@ab-cd.com"));
assertTrue(EmailDoCoMoResultParser.isBasicallyValidEmailAddress("建設省.456@ab-cd.com"));
}
@Test
public void testEmailAddress() {
doTest("srowen@example.org", "srowen@example.org", null, null);
doTest("mailto:srowen@example.org", "srowen@example.org", null, null);
}
@Test
public void testTos() {
doTest("mailto:srowen@example.org,bob@example.org",