FIX: Make error in Discourse Hub more descriptive. (#6438)

This commit is contained in:
Bianca Nenciu 2018-10-09 17:05:31 +03:00 committed by Régis Hanol
parent 47f19adac8
commit 1fb1f4c790
2 changed files with 34 additions and 2 deletions

View File

@ -52,14 +52,25 @@ module DiscourseHub
def self.collection_action(action, rel_url, params = {})
connect_opts = connect_opts(params)
JSON.parse(Excon.send(action,
response = Excon.send(action,
"#{hub_base_url}#{rel_url}",
{
body: JSON[params],
headers: { 'Referer' => referer, 'Accept' => accepts.join(', '), "Content-Type" => "application/json" },
omit_default_port: true
}.merge(connect_opts)
).body)
)
if response.status != 200
Rails.logger.warn("Discourse Hub (#{hub_base_url}#{rel_url}) returned a bad status #{response.status}.")
end
begin
JSON.parse(response.body)
rescue JSON::ParserError
Rails.logger.error("Discourse Hub returned a bad response body: " + response.body)
end
end
def self.connect_opts(params = {})

View File

@ -75,4 +75,25 @@ describe DiscourseHub do
end
end
end
describe '.collection_action' do
it 'should log a warning if status is not 200' do
stub_request(:get, (ENV['HUB_BASE_URL'] || "http://local.hub:3000/api")).
to_return(status: 500, body: "", headers: {})
Rails.logger.expects(:warn)
DiscourseHub.collection_action(:get, "")
end
it 'should log an error if response is invalid JSON' do
stub_request(:get, (ENV['HUB_BASE_URL'] || "http://local.hub:3000/api")).
to_return(status: 200, body: "this is not valid JSON", headers: {})
Rails.logger.expects(:error)
DiscourseHub.collection_action(:get, "")
end
end
end