added validation and tests

This commit is contained in:
dinsmol 2021-07-08 15:49:31 +03:00
parent ded22685c9
commit 77d2e402b4
3 changed files with 87 additions and 0 deletions

View file

@ -16,6 +16,26 @@ class Epp::Contact < Contact
throw(:abort)
end
validate :validate_birthday_ident
def validate_birthday_ident
return unless Depp::Contact::SELECTION_TYPES[2].include?(ident_type)
if (Date.parse(ident) rescue ArgumentError) == ArgumentError
add_epp_error('2308', nil, nil, I18n.t('epp.contacts.errors.valid_ident_date_format'))
@error = true
return
end
contact_ident_date = Date.parse(ident)
valid_time_range = (Date.today - 125.years)...(Date.tomorrow - 18.years)
return if valid_time_range.cover?(contact_ident_date)
add_epp_error('2308', nil, nil, I18n.t('epp.contacts.errors.valid_ident_date_range'))
@error = true
nil
end
class << self
# support legacy search
def find_by_epp_code(code)

View file

@ -8,6 +8,12 @@ en:
valid_ident: >-
Ident update is not allowed.
Consider creating new contact object
valid_ident_date_format: >-
Ident update is not allowed.
Date format is invalid
valid_ident_date_range: >-
Ident update is not allowed.
Age must be over 18 and under 125
ident_update: >-
Only ident type and country can be updated in case of invalid ident.
Please create new contact object to update ident code

View file

@ -81,6 +81,67 @@ class EppContactCreateBaseTest < EppTestCase
assert_epp_response :parameter_value_syntax_error
end
def test_responses_with_error_on_invalid_birthday_date
name = 'new'
email = 'new@registrar.test'
phone = '+1.2'
birthday_wrong_format = '1111-22-33'
birthday_above_valid_range = '1800-01-01'
birthday_below_valid_range = '2008-07-09'
request_xml = <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<create>
<contact:create xmlns:contact="https://epp.tld.ee/schema/contact-ee-1.1.xsd">
<contact:postalInfo>
<contact:name>#{name}</contact:name>
</contact:postalInfo>
<contact:voice>#{phone}</contact:voice>
<contact:email>#{email}</contact:email>
</contact:create>
</create>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:ident type="birthday" cc="LV">#{birthday_wrong_format}</eis:ident>
</eis:extdata>
</extension>
</command>
</epp>
XML
assert_no_difference 'Contact.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
response_xml = Nokogiri::XML(response.body)
assert_correct_against_schema response_xml
assert_epp_response :data_management_policy_violation
request_xml.sub! ">#{birthday_wrong_format}<", ">#{birthday_above_valid_range}<"
assert_no_difference 'Contact.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
response_xml = Nokogiri::XML(response.body)
assert_correct_against_schema response_xml
assert_epp_response :data_management_policy_violation
request_xml.sub! ">#{birthday_above_valid_range}<", ">#{birthday_below_valid_range}<"
assert_no_difference 'Contact.count' do
post epp_create_path, params: { frame: request_xml },
headers: { 'HTTP_COOKIE' => 'session=api_bestnames' }
end
response_xml = Nokogiri::XML(response.body)
assert_correct_against_schema response_xml
assert_epp_response :data_management_policy_violation
end
def test_responces_error_with_email_error
name = 'new'
email = 'new@registrar@test'