Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 17 additions & 10 deletions app/jobs/resolution_proofing_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ class ResolutionProofingJob < ApplicationJob
)

def perform(result_id:, encrypted_arguments:, trace_id:, should_proof_state_id:,
dob_year_only:, user_id: nil, threatmetrix_session_id: nil)
dob_year_only:, user_id: nil, threatmetrix_session_id: nil,
uuid_prefix: nil, request_ip: nil)
timer = JobHelpers::Timer.new

raise_stale_job! if stale_job?(enqueued_at)
Expand All @@ -25,10 +26,14 @@ def perform(result_id:, encrypted_arguments:, trace_id:, should_proof_state_id:,

applicant_pii = decrypted_args[:applicant_pii]

user = User.find_by(id: user_id)

optional_threatmetrix_result = proof_lexisnexis_ddp_with_threatmetrix_if_needed(
applicant_pii,
user_id,
threatmetrix_session_id,
applicant_pii: applicant_pii,
user: user,
threatmetrix_session_id: threatmetrix_session_id,
request_ip: request_ip,
uuid_prefix: uuid_prefix,
)

callback_log_data = if dob_year_only && should_proof_state_id
Expand Down Expand Up @@ -85,9 +90,11 @@ def add_threatmetrix_result_to_callback_result(callback_log_data_result, threatm
end

def proof_lexisnexis_ddp_with_threatmetrix_if_needed(
applicant_pii,
user_id,
threatmetrix_session_id
applicant_pii:,
user:,
threatmetrix_session_id:,
request_ip:,
uuid_prefix:
)
return unless IdentityConfig.store.lexisnexis_threatmetrix_enabled

Expand All @@ -97,16 +104,16 @@ def proof_lexisnexis_ddp_with_threatmetrix_if_needed(

return unless applicant_pii

user = User.find_by(id: user_id)

ddp_pii = applicant_pii.dup
ddp_pii[:threatmetrix_session_id] = threatmetrix_session_id
ddp_pii[:email] = user&.confirmed_email_addresses&.first&.email
ddp_pii[:input_ip_address] = request_ip
ddp_pii[:local_attrib_1] = uuid_prefix

result = lexisnexis_ddp_proofer.proof(ddp_pii)

log_threatmetrix_info(result, user)
add_threatmetrix_proofing_component(user_id, result)
add_threatmetrix_proofing_component(user.id, result)

result
end
Expand Down
4 changes: 3 additions & 1 deletion app/services/proofing/lexis_nexis/ddp/proofer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ class Proofer < LexisNexis::Proofer
:address1,
:city,
:state,
:zipcode
:zipcode,
:request_ip,
:uuid_prefix

optional_attributes :address2, :phone, :email

Expand Down
2 changes: 2 additions & 0 deletions app/services/proofing/lexis_nexis/ddp/verification_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ def build_request_body
service_type: 'all',
session_id: applicant[:threatmetrix_session_id],
ssn_hash: OpenSSL::Digest::SHA256.hexdigest(applicant[:ssn].gsub(/\D/, '')),
input_ip_address: applicant[:request_ip],
local_attrib_1: applicant[:uuid_prefix],
}.to_json
end

Expand Down
5 changes: 4 additions & 1 deletion spec/fixtures/proofing/lexis_nexis/ddp/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,8 @@
"policy": "test-policy",
"service_type": "all",
"session_id": "UNIQUE_SESSION_ID",
"ssn_hash": "15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225"
"ssn_hash": "15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225",
"input_ip_address": "127.0.0.1",
"local_attrib_1": "ABCD"

}
6 changes: 6 additions & 0 deletions spec/jobs/resolution_proofing_job_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
let(:user) { create(:user, :signed_up) }
let(:threatmetrix_session_id) { SecureRandom.uuid }
let(:threatmetrix_request_id) { Proofing::Mock::DdpMockClient::TRANSACTION_ID }
let(:request_ip) { '127.0.0.1' }
let(:uuid_prefix) { 'ABC' }

describe '.perform_later' do
it 'stores results' do
Expand All @@ -53,6 +55,8 @@
trace_id: trace_id,
user_id: user.id,
threatmetrix_session_id: threatmetrix_session_id,
request_ip: request_ip,
uuid_prefix: uuid_prefix,
)

result = document_capture_session.load_proofing_result[:result]
Expand All @@ -72,6 +76,8 @@
trace_id: trace_id,
user_id: user.id,
threatmetrix_session_id: threatmetrix_session_id,
request_ip: request_ip,
uuid_prefix: uuid_prefix,
)
end

Expand Down
2 changes: 2 additions & 0 deletions spec/services/proofing/lexis_nexis/ddp/proofing_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
threatmetrix_session_id: '123456',
phone: '5551231234',
email: 'test@example.com',
request_ip: '127.0.0.1',
uuid_prefix: 'ABCD',
}
end
let(:verification_request) do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
threatmetrix_session_id: 'UNIQUE_SESSION_ID',
phone: '5551231234',
email: 'test@example.com',
request_ip: '127.0.0.1',
uuid_prefix: 'ABCD',
}
end

Expand Down