From 804bdfc1468713f3de7b13c77877dc98aaf14eba Mon Sep 17 00:00:00 2001 From: Alex Sanford Date: Thu, 30 Nov 2023 16:47:21 -0400 Subject: [PATCH] Handle a string response from a WP REST API endpoint --- app/finders/users/wp_json_api.rb | 16 ++++++++++------ spec/app/finders/users/wp_json_api_spec.rb | 6 ++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/finders/users/wp_json_api.rb b/app/finders/users/wp_json_api.rb index 73b23f368..25c1a9f33 100644 --- a/app/finders/users/wp_json_api.rb +++ b/app/finders/users/wp_json_api.rb @@ -42,12 +42,16 @@ def aggressive(_opts = {}) def users_from_response(response) found = [] - JSON.parse(response.body)&.each do |user| - found << Model::User.new(user['slug'], - id: user['id'], - found_by: found_by, - confidence: 100, - interesting_entries: [response.effective_url]) + json = JSON.parse(response.body) + + if json.is_a? Enumerable + json.each do |user| + found << Model::User.new(user['slug'], + id: user['id'], + found_by: found_by, + confidence: 100, + interesting_entries: [response.effective_url]) + end end found diff --git a/spec/app/finders/users/wp_json_api_spec.rb b/spec/app/finders/users/wp_json_api_spec.rb index a9af123ec..64453dfb3 100644 --- a/spec/app/finders/users/wp_json_api_spec.rb +++ b/spec/app/finders/users/wp_json_api_spec.rb @@ -25,6 +25,12 @@ its(:aggressive) { should eql([]) } end + context 'when a string response' do + let(:body) { '404' } + + its(:aggressive) { should eql([]) } + end + context 'when a JSON response' do context 'when unauthorised' do let(:body) { File.read(fixtures.join('401.json')) }