Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
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
17 changes: 17 additions & 0 deletions app/services/doc_auth/socure/requests/document_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,23 @@ def handle_http_response(http_response)
JSON.parse(http_response.body, symbolize_names: true)
end

def handle_connection_error(exception:, status_code: nil, status_message: nil)
NewRelic::Agent.notice_error(exception)
# DocAuth::Socure::Responses::DocvResultResponse.new
DocAuth::Response.new(
success: false,
errors: { network: true },
exception: exception,
extra: {
vendor: 'Socure',
selfie_live: false,
selfie_quality_good: false,
Comment thread
AShukla-GSA marked this conversation as resolved.
Outdated
vendor_status_code: status_code,
vendor_status_message: status_message,
}.compact,
)
end

def method
:post
end
Expand Down
8 changes: 8 additions & 0 deletions app/services/doc_auth/socure/requests/docv_result_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ def handle_http_response(http_response)
)
end

def handle_connection_error(exception:)
NewRelic::Agent.notice_error(exception)
DocAuth::Socure::Responses::DocvResultResponse.new(
http_response: nil,
Comment thread
AShukla-GSA marked this conversation as resolved.
Outdated
biometric_comparison_required: @biometric_comparison_required,
)
end

def document_capture_session
@document_capture_session ||=
DocumentCaptureSession.find_by!(uuid: document_capture_session_uuid)
Expand Down
26 changes: 26 additions & 0 deletions spec/services/doc_auth/socure/requests/document_request_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -99,5 +99,31 @@
expect { document_request.fetch }.not_to raise_error
end
end
context 'with timeout exception' do
let(:response) { nil }
let(:response_status) { 403 }

before do
stub_request(:post, fake_socure_endpoint).to_raise(Faraday::ConnectionFailed)
end
it 'expect handle_connection_error method to be called' do
connection_error_attributes = {
success: false,
errors: { network: true },
exception: Faraday::ConnectionFailed,
extra: {
vendor: 'Socure',
selfie_live: false,
selfie_quality_good: false,
vendor_status_code: nil,
vendor_status_message: nil,
}.compact,
}
failed_response = DocAuth::Response.new(**connection_error_attributes)
allow(DocAuth::Response).to receive(:new).with(**connection_error_attributes).
and_return(failed_response)
expect(document_request.fetch).to eq(failed_response)
end
end
end
end
51 changes: 51 additions & 0 deletions spec/services/doc_auth/socure/requests/docv_result_request_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
require 'rails_helper'

RSpec.describe DocAuth::Socure::Requests::DocvResultRequest do
let(:document_capture_session_uuid) { 'fake uuid' }
let(:biometric_comparison_required) { false }

subject(:docv_result_request) do
described_class.new(
document_capture_session_uuid:,
biometric_comparison_required: biometric_comparison_required,
)
end

describe '#fetch' do
let(:fake_socure_endpoint) { 'https://fake-socure.com/' }
Comment thread
AShukla-GSA marked this conversation as resolved.
Outdated
let(:fake_socure_api_endpoint) { 'https://fake-socure.com/api/3.0/EmailAuthScore' }
Comment thread
AShukla-GSA marked this conversation as resolved.
Outdated
let(:docv_transaction_token) { 'fake docv transaction token' }
let(:user) { create(:user) }
let(:document_capture_session) do
DocumentCaptureSession.create(user:).tap do |dcs|
dcs.socure_docv_transaction_token = docv_transaction_token
end
end

before do
allow(IdentityConfig.store).to receive(:socure_idplus_base_url).
and_return(fake_socure_endpoint)
allow(DocumentCaptureSession).to receive(:find_by).and_return(document_capture_session)
stub_request(:post, fake_socure_api_endpoint).to_raise(Faraday::ConnectionFailed)
end

context 'with timeout exception' do
let(:fake_socure_response) { {} }
let(:fake_socure_status) { 500 }

it 'expect handle_connection_error method to be called' do
connection_error_attributes = {
http_response: nil,
biometric_comparison_required: biometric_comparison_required,
}
failed_response = DocAuth::Socure::Responses::DocvResultResponse.new(
**connection_error_attributes,
)
allow(DocAuth::Socure::Responses::DocvResultResponse).to receive(:new).
with(**connection_error_attributes).
and_return(failed_response)
expect(docv_result_request.fetch).to eq(failed_response)
end
end
end
end