diff --git a/lib/premailer/rails/css_loaders/network_loader.rb b/lib/premailer/rails/css_loaders/network_loader.rb index 2ffa9e9..7359cd2 100644 --- a/lib/premailer/rails/css_loaders/network_loader.rb +++ b/lib/premailer/rails/css_loaders/network_loader.rb @@ -6,7 +6,10 @@ module NetworkLoader def load(url) uri = uri_for_url(url) - Net::HTTP.get(uri, { 'Accept' => 'text/css' }) if uri + if uri + response = Net::HTTP.get_response(uri, { 'Accept' => 'text/css' }) + response.body if response.is_a?(Net::HTTPSuccess) + end end def uri_for_url(url) diff --git a/spec/unit/css_loaders/network_loader_spec.rb b/spec/unit/css_loaders/network_loader_spec.rb index 8fe1f79..b9b910c 100644 --- a/spec/unit/css_loaders/network_loader_spec.rb +++ b/spec/unit/css_loaders/network_loader_spec.rb @@ -55,4 +55,28 @@ end end end + + describe '#load' do + subject { described_class.load(url) } + let(:url) { 'https://example.com/style.css' } + + context 'when resource exists' do + it 'returns the body' do + response = Net::HTTPSuccess.new('1.1', 200, nil) + allow(response).to receive(:body).and_return('BODY') + allow(Net::HTTP).to receive(:get_response).and_return(response) + + expect(subject).to eq('BODY') + end + end + + context 'when resource is not found' do + it 'returns the body' do + response = Net::HTTPNotFound.new('1.1', 404, 'Not Found') + allow(Net::HTTP).to receive(:get_response).and_return(response) + + expect(subject).to be_nil + end + end + end end