typoed_email_validator: add new ending to the typo list
also: - consider '.mail' TLD a typo - get rid of a deprecation warning
This commit is contained in:
parent
703ff54f5f
commit
3d6fb9dc34
|
@ -6,6 +6,7 @@ class TypoedEmailValidator < ActiveModel::EachValidator
|
||||||
# without @:
|
# without @:
|
||||||
".con",
|
".con",
|
||||||
".coom",
|
".coom",
|
||||||
|
".mail",
|
||||||
|
|
||||||
# with @:
|
# with @:
|
||||||
*%w[
|
*%w[
|
||||||
|
@ -15,15 +16,15 @@ class TypoedEmailValidator < ActiveModel::EachValidator
|
||||||
gmaile.com
|
gmaile.com
|
||||||
gmaill.com
|
gmaill.com
|
||||||
gmali.com
|
gmali.com
|
||||||
|
hotmaill.com
|
||||||
icluod.com
|
icluod.com
|
||||||
proton.mail
|
|
||||||
].map { "@#{_1}" }
|
].map { "@#{_1}" }
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
def validate_each(record, attribute, value)
|
def validate_each(record, attribute, value)
|
||||||
return if valid?(value)
|
return if valid?(value)
|
||||||
|
|
||||||
record.errors[attribute] << "contains a typo"
|
record.errors.add(attribute, :typo, message: "contains a typo")
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -62,6 +62,7 @@ RSpec.describe User, type: :model do
|
||||||
include_examples "valid email", "fritz.fantom@gmail.com"
|
include_examples "valid email", "fritz.fantom@gmail.com"
|
||||||
include_examples "valid email", "fritz.fantom@columbiamail.co"
|
include_examples "valid email", "fritz.fantom@columbiamail.co"
|
||||||
include_examples "valid email", "fritz.fantom@protonmail.com"
|
include_examples "valid email", "fritz.fantom@protonmail.com"
|
||||||
|
include_examples "valid email", "fritz.fantom@example.email"
|
||||||
include_examples "valid email", "fritz.fantom@enterprise.k8s.420stripes.k8s.needs.more.k8s.jira.atlassian.k8s.eu-central-1.s3.amazonaws.com"
|
include_examples "valid email", "fritz.fantom@enterprise.k8s.420stripes.k8s.needs.more.k8s.jira.atlassian.k8s.eu-central-1.s3.amazonaws.com"
|
||||||
include_examples "invalid email", "@jack"
|
include_examples "invalid email", "@jack"
|
||||||
|
|
||||||
|
@ -72,6 +73,8 @@ RSpec.describe User, type: :model do
|
||||||
include_examples "invalid email", "fritz.fantom@protonmail.con"
|
include_examples "invalid email", "fritz.fantom@protonmail.con"
|
||||||
# neither is .coom
|
# neither is .coom
|
||||||
include_examples "invalid email", "fritz.fantom@gmail.coom"
|
include_examples "invalid email", "fritz.fantom@gmail.coom"
|
||||||
|
# nor .mail (.email is, however)
|
||||||
|
include_examples "invalid email", "fritz.fantom@proton.mail"
|
||||||
# common typos:
|
# common typos:
|
||||||
include_examples "invalid email", "fritz.fantom@fmail.com"
|
include_examples "invalid email", "fritz.fantom@fmail.com"
|
||||||
include_examples "invalid email", "fritz.fantom@gemail.com"
|
include_examples "invalid email", "fritz.fantom@gemail.com"
|
||||||
|
@ -81,12 +84,11 @@ RSpec.describe User, type: :model do
|
||||||
include_examples "invalid email", "fritz.fantom@gmaill.com"
|
include_examples "invalid email", "fritz.fantom@gmaill.com"
|
||||||
include_examples "invalid email", "fritz.fantom@gmali.com"
|
include_examples "invalid email", "fritz.fantom@gmali.com"
|
||||||
include_examples "invalid email", "fritz.fantom@hotmailcom"
|
include_examples "invalid email", "fritz.fantom@hotmailcom"
|
||||||
|
include_examples "invalid email", "fritz.fantom@hotmaill.com"
|
||||||
include_examples "invalid email", "fritz.fantom@icluod.com"
|
include_examples "invalid email", "fritz.fantom@icluod.com"
|
||||||
# no TLD
|
# no TLD
|
||||||
include_examples "invalid email", "fritz.fantom@gmail"
|
include_examples "invalid email", "fritz.fantom@gmail"
|
||||||
include_examples "invalid email", "fritz.fantom@protonmail"
|
include_examples "invalid email", "fritz.fantom@protonmail"
|
||||||
# not registered as of 2022-01-11
|
|
||||||
include_examples "invalid email", "fritz.fantom@proton.mail"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# -- User::TimelineMethods --
|
# -- User::TimelineMethods --
|
||||||
|
|
Loading…
Reference in New Issue