Merge pull request #3687 from milchakov/MAPSME-1656_incorrect_email_validation

[editor] Mapsme 1656 incorrect email validation
This commit is contained in:
mgsergio 2016-06-29 20:10:59 +04:00 committed by GitHub
commit 5015a51721
2 changed files with 21 additions and 6 deletions

View file

@ -315,6 +315,15 @@ bool EditableMapObject::ValidateEmail(string const & email)
if (email.empty())
return true;
if (strings::IsASCIIString(email))
return regex_match(email, regex(R"([^@\s]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$)"));
if ('@' == email.front() || '@' == email.back())
return false;
if ('.' == email.back())
return false;
auto const atPos = find(begin(email), end(email), '@');
if (atPos == end(email))
return false;
@ -323,14 +332,10 @@ bool EditableMapObject::ValidateEmail(string const & email)
if (find(next(atPos), end(email), '@') != end(email))
return false;
// There should be at least one '.' sign after '@' ...
// There should be at least one '.' sign after '@'
if (find(next(atPos), end(email), '.') == end(email))
return false;
// ... not in the end.
if (email.back() == '.')
return false;
return true;
}
} // namespace osm

View file

@ -107,10 +107,20 @@ UNIT_TEST(EditableMapObject_ValidateEmail)
TEST(EditableMapObject::ValidateEmail(""), ());
TEST(EditableMapObject::ValidateEmail("e@ma.il"), ());
TEST(EditableMapObject::ValidateEmail("e@ma.i.l"), ());
TEST(EditableMapObject::ValidateEmail("e-m.ail@dot.com.gov"), ());
TEST(EditableMapObject::ValidateEmail("#$%&'*+-/=?^`_{}|~.@dot.qw.com.gov"), ());
TEST(!EditableMapObject::ValidateEmail("e.ma.il"), ());
TEST(!EditableMapObject::ValidateEmail("e@ma@il"), ());
TEST(!EditableMapObject::ValidateEmail("e@ma@i.l"), ());
TEST(!EditableMapObject::ValidateEmail("e@mail"), ());
TEST(!EditableMapObject::ValidateEmail("@email.a"), ());
TEST(!EditableMapObject::ValidateEmail("emai.l@"), ());
TEST(!EditableMapObject::ValidateEmail("emai@l."), ());
TEST(!EditableMapObject::ValidateEmail("e mai@l.com"), ());
TEST(!EditableMapObject::ValidateEmail("emai@.l"), ());
TEST(!EditableMapObject::ValidateEmail("emai@_l.ab"), ());
TEST(!EditableMapObject::ValidateEmail("emai@l_.ab"), ());
TEST(!EditableMapObject::ValidateEmail("email@e#$%&'*+-/=?^`_{}|~.com"), ());
}
} // namespace