Browse Source

Add error handling for json parsing to UPRN client (#2992)

* Add error handling for JSON parsing in UPRN client

* Update error handling

* Update error handling 2

* Updates with sentry error reporting and test

* Add rails logger message as well as sentry
pull/2993/head
Manny Dinssa 1 week ago committed by GitHub
parent
commit
d8f3541d40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      app/services/uprn_client.rb
  2. 28
      spec/services/uprn_client_spec.rb

4
app/services/uprn_client.rb

@ -24,7 +24,9 @@ class UprnClient
parsed_response = JSON.parse(response.body)
parsed_response.dig("results", 0, "DPA") || parsed_response.dig("results", 0, "LPI")
else
Rails.logger.error("Response code: #{response.code}")
@error = "UPRN client failed to return a valid result, try again later."
Sentry.capture_message("UPRN client failed to return a valid result with error code: #{response.code}.")
Rails.logger.error("UPRN client failed to return a valid result with error code: #{response.code}.")
Rails.logger.error("Response body: #{response.body}")
nil
end

28
spec/services/uprn_client_spec.rb

@ -86,5 +86,33 @@ describe UprnClient do
expect(client.error).to be_nil
end
end
describe "result" do
context "when response is successful" do
before do
stub_api_request(body: valid_response)
client.call
end
it "returns parsed result" do
expect(client.result).to eq({ "postcode" => "12345" })
expect(client.send(:response).code.to_i).to eq(200)
end
end
context "when response is not successful" do
before do
stub_api_request(body: valid_response, status: 500)
client.call
end
it "returns nil" do
expect(client.result).to be_nil
expect(client.error).to eq("UPRN client failed to return a valid result, try again later.")
end
end
end
end
end

Loading…
Cancel
Save