Merge pull request #1968 from internetee/61-registrant-contact-update-fix

Fix contact update via registrant center
This commit is contained in:
Timo Võhmar 2021-05-19 09:32:34 +03:00 committed by GitHub
commit 21009142d6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 4 deletions

View file

@ -35,6 +35,8 @@ module Api
end
def update
logger.debug 'Received update request'
logger.debug params
contact = current_user_contacts.find_by!(uuid: params[:uuid])
contact.name = params[:name] if params[:name].present?
contact.email = params[:email] if params[:email].present?
@ -44,10 +46,12 @@ module Api
# https://github.com/rails/rails/pull/13157
reparsed_request_json = ActiveSupport::JSON.decode(request.body.string)
.with_indifferent_access
logger.debug 'Reparsed request is following'
logger.debug reparsed_request_json.to_s
disclosed_attributes = reparsed_request_json[:disclosed_attributes]
if disclosed_attributes
if contact.org?
if disclosed_attributes.present? && contact.org?
error_msg = "Legal person's data is visible by default and cannot be concealed." \
' Please remove this parameter.'
render json: { errors: [{ disclosed_attributes: [error_msg] }] }, status: :bad_request
@ -57,6 +61,8 @@ module Api
contact.disclosed_attributes = disclosed_attributes
end
logger.debug "Setting.address_processing is set to #{Setting.address_processing}"
if Setting.address_processing && params[:address]
address = Contact::Address.new(params[:address][:street],
params[:address][:zip],
@ -75,6 +81,7 @@ module Api
contact.fax = params[:fax] if params[:fax].present?
end
logger.debug "ENV['fax_enabled'] is set to #{ENV['fax_enabled']}"
if ENV['fax_enabled'] != 'true' && params[:fax]
error_msg = 'Fax processing is disabled and therefore cannot be updated'
render json: { errors: [{ address: [error_msg] }] }, status: :bad_request and return
@ -116,6 +123,10 @@ module Api
def serialize_contact(contact, links)
Serializers::RegistrantApi::Contact.new(contact, links).to_json
end
def logger
Rails.logger
end
end
end
end

View file

@ -9,7 +9,7 @@ class RegistrantApiV1ContactUpdateTest < ActionDispatch::IntegrationTest
@original_address_processing = Setting.address_processing
@original_fax_enabled_setting = ENV['fax_enabled']
@user = users(:registrant)
end
teardown do
@ -160,6 +160,21 @@ class RegistrantApiV1ContactUpdateTest < ActionDispatch::IntegrationTest
assert_equal %w[name], @contact.disclosed_attributes
end
def test_updates_org_person_data
name = 'SomeWeirdName'
@contact.update!(ident_type: Contact::ORG,
disclosed_attributes: %w[])
patch api_v1_registrant_contact_path(@contact.uuid),
params: { disclosed_attributes: %w[], name: name },
as: :json,
headers: { 'HTTP_AUTHORIZATION' => auth_token }
@contact.reload
assert_response :ok
assert_equal name, @contact.name
end
def test_conceal_private_persons_data
@contact.update!(ident_type: Contact::PRIV, disclosed_attributes: %w[name])
@ -244,9 +259,9 @@ class RegistrantApiV1ContactUpdateTest < ActionDispatch::IntegrationTest
headers: { 'HTTP_AUTHORIZATION' => auth_token }
assert_response :bad_request
err_msg = "Legal person's data is visible by default and cannot be concealed. Please remove this parameter."
response_json = JSON.parse(response.body, symbolize_names: true)
response_msg = response_json[:errors][0][:disclosed_attributes][0]