Merge branch 'master' into glitch-soc/merge-upstream

master
Thibaut Girka 6 years ago
commit 343acd96cc
  1. 18
      app/services/verify_link_service.rb
  2. 2
      config/locales/es.yml
  3. 16
      spec/services/verify_link_service_spec.rb

@ -27,6 +27,22 @@ 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[contains(concat(" ", normalize-space(@rel), " "), " me ")]|//link[contains(concat(" ", normalize-space(@rel), " "), " me ")]').any? { |link| link['href'] == @link_back } links = Nokogiri::HTML(@body).xpath('//a[contains(concat(" ", normalize-space(@rel), " "), " me ")]|//link[contains(concat(" ", normalize-space(@rel), " "), " me ")]')
if links.any? { |link| link['href'] == @link_back }
true
elsif links.empty?
false
else
link_redirects_back?(links.first['href'])
end
end
def link_redirects_back?(test_url)
redirect_to_url = Request.new(:head, test_url, follow: false).perform do |res|
res.headers['Location']
end
redirect_to_url == @link_back
end end
end end

@ -47,7 +47,7 @@ es:
one: Seguidor one: Seguidor
other: Seguidores other: Seguidores
following: Siguiendo following: Siguiendo
joined: Se unió el %{fecha} joined: Se unió el %{date}
media: Media media: Media
moved_html: "%{name} se ha trasladado a %{new_profile_link}:" moved_html: "%{name} se ha trasladado a %{new_profile_link}:"
network_hidden: Esta información no está disponible network_hidden: Esta información no está disponible

@ -7,6 +7,7 @@ RSpec.describe VerifyLinkService, type: :service do
let(:field) { Account::Field.new(account, 'name' => 'Website', 'value' => 'http://example.com') } let(:field) { Account::Field.new(account, 'name' => 'Website', 'value' => 'http://example.com') }
before do before do
stub_request(:head, 'https://redirect.me/abc').to_return(status: 301, headers: { 'Location' => ActivityPub::TagManager.instance.url_for(account) })
stub_request(:get, 'http://example.com').to_return(status: 200, body: html) stub_request(:get, 'http://example.com').to_return(status: 200, body: html)
subject.call(field) subject.call(field)
end end
@ -56,6 +57,21 @@ RSpec.describe VerifyLinkService, type: :service do
end end
end end
context 'when a link goes through a redirect back' do
let(:html) do
<<-HTML
<!doctype html>
<head>
<link type="text/html" href="https://redirect.me/abc" rel="me" />
</head>
HTML
end
it 'marks the field as verified' do
expect(field.verified?).to be true
end
end
context 'when a link does not contain a link back' do context 'when a link does not contain a link back' do
let(:html) { '' } let(:html) { '' }

Loading…
Cancel
Save