Merge pull request #2102 from internetee/1795-validation-contacts-name

Fix for contact name validation (only for persons)
This commit is contained in:
Alex Sherman 2021-07-23 13:09:32 +05:00 committed by GitHub
commit e00e09713c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 0 deletions

View file

@ -28,7 +28,12 @@ class Contact < ApplicationRecord
.where('success = false and verified_at IS NOT NULL')
}
NAME_REGEXP = /([\u00A1-\u00B3\u00B5-\u00BF\u0021-\u0026\u0028-\u002C\u003A-\u0040]|
[\u005B-\u005F\u007B-\u007E\u2040-\u206F\u20A0-\u20BF\u2100-\u218F])/x.freeze
validates :name, :email, presence: true
validates :name, format: { without: NAME_REGEXP, message: :invalid }, if: -> { priv? }
validates :street, :city, :zip, :country_code, presence: true, if: lambda {
self.class.address_processing?
}

View file

@ -14,6 +14,7 @@ en:
too_long_contact_code: "Contact code is too long, max 100 characters"
name:
blank: "Required parameter missing - name"
invalid: "Name is invalid"
phone:
blank: "Required parameter missing - phone"
invalid: "Phone nr is invalid"

View file

@ -32,6 +32,21 @@ class ContactTest < ActiveJob::TestCase
assert contact.invalid?
end
def test_allowed_and_disallowed_symbols_for_name
contact = valid_contact
contact.name = 'MARY ÄNN OCONNEŽ-ŠUSLIK'
assert contact.valid?
contact.name = 'Boğaçhan Çağlayan'
assert contact.valid?
contact.name = '# "¤ #" ¤ "?'
assert contact.invalid?
contact.country_code = 'FI'
contact.ident_type = Contact::ORG
contact.ident = '1234'
assert contact.valid?
end
def test_validates_code_format
contact = valid_contact.dup
max_length = 100