From 5b2b493a908cbea55096f7f028c306f6270e3b00 Mon Sep 17 00:00:00 2001 From: "Renato \"Lond\" Cerqueira" Date: Wed, 29 Aug 2018 21:13:49 +0200 Subject: [PATCH] Fix nil host in remotable (#8508) Host can be nil in urls like 'https:https://example.com/path/file.png' --- app/models/concerns/remotable.rb | 2 +- spec/models/concerns/remotable_spec.rb | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb index c17f19a6005..9372a963bf6 100644 --- a/app/models/concerns/remotable.rb +++ b/app/models/concerns/remotable.rb @@ -18,7 +18,7 @@ module Remotable return end - return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.empty? || self[attribute_name] == url + return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.blank? || self[attribute_name] == url begin Request.new(:get, url).perform do |response| diff --git a/spec/models/concerns/remotable_spec.rb b/spec/models/concerns/remotable_spec.rb index b39233739c0..a4289cc45e7 100644 --- a/spec/models/concerns/remotable_spec.rb +++ b/spec/models/concerns/remotable_spec.rb @@ -88,7 +88,18 @@ RSpec.describe Remotable do context 'parsed_url.host is empty' do it 'makes no request' do - parsed_url = double(scheme: 'https', host: double(empty?: true)) + parsed_url = double(scheme: 'https', host: double(blank?: true)) + allow(Addressable::URI).to receive_message_chain(:parse, :normalize) + .with(url).with(no_args).and_return(parsed_url) + + foo.hoge_remote_url = url + expect(request).not_to have_been_requested + end + end + + context 'parsed_url.host is nil' do + it 'makes no request' do + parsed_url = Addressable::URI.parse('https:https://example.com/path/file.png') allow(Addressable::URI).to receive_message_chain(:parse, :normalize) .with(url).with(no_args).and_return(parsed_url)