Fix domain update confirm if pendong_json current_user_id got non-string values

This commit is contained in:
Alex Sherman 2021-05-10 11:44:22 +05:00
parent 787016b9b6
commit 9df52af96b
2 changed files with 30 additions and 1 deletions

View file

@ -29,11 +29,17 @@ module Domains
end
def assign_domain_update_meta
user = ApiUser.find_by(id: domain.pending_json['current_user_id'])
user = ApiUser.find_by(id: user_id) if user_id.present? && user_id.is_a?(String)
domain.upid = user.registrar.id if user.present? && user.registrar
domain.up_date = Time.zone.now
end
private
def user_id
@user_id ||= domain.pending_json.dig('current_user_id')
end
end
end
end

View file

@ -127,6 +127,29 @@ class DomainUpdateConfirmJobTest < ActiveSupport::TestCase
assert @domain.statuses.include? DomainStatus::DISPUTED
end
def test_works_id_current_user_id_broken
epp_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<epp>\n <command>\n <update>\n <update>\n <name>#{@domain.name}</name>\n" \
" <chg>\n <registrant>#{@new_registrant.code}</registrant>\n </chg>\n </update>\n </update>\n <extension>\n <update/>\n" \
" <extdata>\n <legalDocument type=\"pdf\">#{@legal_doc_path}</legalDocument>\n </extdata>\n" \
" </extension>\n <clTRID>20alla-1594199756</clTRID>\n </command>\n</epp>\n"
parsed_frame = Deserializers::Xml::DomainUpdate.new(Nokogiri::XML(epp_xml), @domain.registrar.id).call
@domain.pending_json['frame'] = parsed_frame
@domain.pending_json['current_user_id'] = { key: 'some_value'}
@domain.update(pending_json: @domain.pending_json)
@domain.update(statuses: [DomainStatus::DELETE_CANDIDATE, DomainStatus::DISPUTED])
assert_nothing_raised do
DomainUpdateConfirmJob.perform_now(@domain.id, RegistrantVerification::CONFIRMED)
end
@domain.reload
assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE_CONFIRMATION
assert_not @domain.statuses.include? DomainStatus::PENDING_DELETE
assert @domain.statuses.include? DomainStatus::DELETE_CANDIDATE
assert @domain.statuses.include? DomainStatus::DISPUTED
end
def test_clears_pending_update_and_inactive_after_denial
epp_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<epp>\n <command>\n <update>\n <update>\n <name>#{@domain.name}</name>\n" \
" <chg>\n <registrant>#{@new_registrant.code}</registrant>\n </chg>\n </update>\n </update>\n <extension>\n <update/>\n" \