Fix failed profile verification when rel attribute including values other than me (#8733)

lolsob-rspec
Yamagishi Kazutoshi 2018-09-19 23:47:31 +09:00 committed by Eugen Rochko
parent 07cab6dab3
commit 6d970d6e71
2 changed files with 16 additions and 1 deletions

View File

@ -27,6 +27,6 @@ class VerifyLinkService < BaseService
def link_back_present? def link_back_present?
return false if @body.empty? return false if @body.empty?
Nokogiri::HTML(@body).xpath('//a[@rel="me"]|//link[@rel="me"]').any? { |link| link['href'] == @link_back } Nokogiri::HTML(@body).xpath('//a[contains(concat(" ", normalize-space(@rel), " "), " me ")]|//link[contains(concat(" ", normalize-space(@rel), " "), " me ")]').any? { |link| link['href'] == @link_back }
end end
end end

View File

@ -26,6 +26,21 @@ RSpec.describe VerifyLinkService, type: :service do
end end
end end
context 'when a link contains an <a rel="noopener"> back' do
let(:html) do
<<-HTML
<!doctype html>
<body>
<a href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="noopener me" target="_blank">Follow me on Mastodon</a>
</body>
HTML
end
it 'marks the field as verified' do
expect(field.verified?).to be true
end
end
context 'when a link contains a <link> back' do context 'when a link contains a <link> back' do
let(:html) do let(:html) do
<<-HTML <<-HTML