FIX: prevents malformed href to crash TopicEmbed (#12910)

If the associated page of a remote url passed to `TopicEmber.new(remote_url)` contained a malformed link like: `<a href="(http://foo.bar)">Baz</a>` it would raise an uncaught exception:

```
Job exception: Invalid scheme format: (http
```
This commit is contained in:
Joffrey JAFFEUX 2021-04-30 11:10:19 +02:00 committed by GitHub
parent 2f0205e5c8
commit ed818a4a19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 1 deletions

View File

@ -165,7 +165,7 @@ class TopicEmbed < ActiveRecord::Base
uri.host = original_uri.host
node[url_param] = uri.to_s
end
rescue URI::Error
rescue URI::Error, Addressable::URI::InvalidURIError
# If there is a mistyped URL, just do nothing
end
end

View File

@ -343,6 +343,22 @@ describe TopicEmbed do
expect(response.body).to have_tag('a', with: { href: 'mailto:bar@example.com' })
end
end
context "malformed href" do
let(:url) { 'http://example.com/foo' }
let(:contents) { '<p><a href="(http://foo.bar)">Baz</a></p>' }
let!(:file) { StringIO.new }
before do
file.stubs(:read).returns contents
TopicEmbed.stubs(:open).returns file
end
it "doesnt raise an exception" do
stub_request(:head, url)
expect { TopicEmbed.find_remote(url) }.not_to raise_error
end
end
end
describe '.absolutize_urls' do