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,7 +29,7 @@ import java.util.regex.Pattern;
*/ */
public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser { 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 @Override
public EmailAddressParsedResult parse(Result result) { public EmailAddressParsedResult parse(Result result) {
@ -58,7 +58,7 @@ public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser {
* in a barcode, not "judge" it. * in a barcode, not "judge" it.
*/ */
static boolean isBasicallyValidEmailAddress(String email) { 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 { 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 @Test
public void testEmailAddress() { public void testEmailAddress() {
doTest("srowen@example.org", "srowen@example.org", null, null); doTest("srowen@example.org", "srowen@example.org", null, null);
doTest("mailto:srowen@example.org", "srowen@example.org", null, null); doTest("mailto:srowen@example.org", "srowen@example.org", null, null);
} }
@Test @Test
public void testTos() { public void testTos() {
doTest("mailto:srowen@example.org,bob@example.org", doTest("mailto:srowen@example.org,bob@example.org",