diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index 1c928c531a..4c008a06a1 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -6,6 +6,7 @@
- content_for :header_tags do
%meta{ property: 'og:site_name', content: site_title }/
+ %meta{ property: 'og:url', content: about_url }/
%meta{ property: 'og:type', content: 'website' }/
%meta{ property: 'og:title', content: site_hostname }/
%meta{ property: 'og:description', content: strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon')) }/
diff --git a/app/views/accounts/_og.html.haml b/app/views/accounts/_og.html.haml
index b7f019c506..3ad39f391d 100644
--- a/app/views/accounts/_og.html.haml
+++ b/app/views/accounts/_og.html.haml
@@ -1,3 +1,4 @@
+%meta{ property: 'og:url', content: url }/
%meta{ property: 'og:site_name', content: site_title }/
%meta{ property: 'og:title', content: [yield(:page_title).strip.presence, site_title].compact.join(' - ') }/
%meta{ property: 'og:description', content: account.note }/
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index 4611155cdd..11f74decf3 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -6,7 +6,7 @@
%link{ rel: 'alternate', type: 'application/atom+xml', href: account_url(@account, format: 'atom') }/
%meta{ property: 'og:type', content: 'profile' }/
- = render 'og', account: @account
+ = render 'og', account: @account, url: account_url(@account, only_path: false)
- if show_landing_strip?
= render partial: 'shared/landing_strip', locals: { account: @account }
diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml
index 4052967dab..ee62c79ebf 100644
--- a/app/views/follower_accounts/index.html.haml
+++ b/app/views/follower_accounts/index.html.haml
@@ -2,7 +2,7 @@
= t('accounts.people_who_follow', name: display_name(@account))
- content_for :header_tags do
- = render 'accounts/og', account: @account
+ = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false)
= render 'accounts/header', account: @account
diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml
index 11e730e048..68a0ef8389 100644
--- a/app/views/following_accounts/index.html.haml
+++ b/app/views/following_accounts/index.html.haml
@@ -2,7 +2,7 @@
= t('accounts.people_followed_by', name: display_name(@account))
- content_for :header_tags do
- = render 'accounts/og', account: @account
+ = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false)
= render 'accounts/header', account: @account
diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml
index 31efa26c42..d01e82af8f 100644
--- a/app/views/stream_entries/show.html.haml
+++ b/app/views/stream_entries/show.html.haml
@@ -5,6 +5,7 @@
%meta{ property: 'og:site_name', content: site_title }/
%meta{ property: 'og:type', content: 'article' }/
%meta{ property: 'og:title', content: "#{@account.username} on #{site_hostname}" }/
+ %meta{ property: 'og:url', content: account_stream_entry_url(@account, @stream_entry) }/
= render 'stream_entries/og_description', activity: @stream_entry.activity
= render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account
diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb
new file mode 100644
index 0000000000..686d393fbe
--- /dev/null
+++ b/spec/views/about/show.html.haml_spec.rb
@@ -0,0 +1,25 @@
+require 'rails_helper'
+$LOAD_PATH << '../lib'
+require 'tag_manager'
+
+describe 'about/show.html.haml' do
+ before do
+ end
+
+ it 'has valid open graph tags' do
+ instance_presenter = double(:instance_presenter,
+ site_description: 'something',
+ open_registrations: false,
+ closed_registrations_message: 'yes',
+ )
+ assign(:instance_presenter, instance_presenter)
+ render
+
+ header_tags = view.content_for(:header_tags)
+
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ end
+end
diff --git a/spec/views/accounts/show.html.haml_spec.rb b/spec/views/accounts/show.html.haml_spec.rb
index 6ddb2c36de..e9f6493b1c 100644
--- a/spec/views/accounts/show.html.haml_spec.rb
+++ b/spec/views/accounts/show.html.haml_spec.rb
@@ -20,4 +20,23 @@ describe 'accounts/show.html.haml' do
expect(Nokogiri::HTML(rendered).search('.h-feed .h-entry').size).to eq 3
end
+
+ it 'has valid opengraph tags' do
+ alice = Fabricate(:account, username: 'alice', display_name: 'Alice')
+ status = Fabricate(:status, account: alice, text: 'Hello World')
+
+ assign(:account, alice)
+ assign(:statuses, alice.statuses)
+ assign(:stream_entry, status.stream_entry)
+ assign(:type, status.stream_entry.activity_type.downcase)
+
+ render
+
+ header_tags = view.content_for(:header_tags)
+
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ end
end
diff --git a/spec/views/stream_entries/show.html.haml_spec.rb b/spec/views/stream_entries/show.html.haml_spec.rb
index acc0c39f5b..0dd150524d 100644
--- a/spec/views/stream_entries/show.html.haml_spec.rb
+++ b/spec/views/stream_entries/show.html.haml_spec.rb
@@ -61,4 +61,23 @@ describe 'stream_entries/show.html.haml' do
expect(mf2.entry.in_reply_to.format.author.format.name.to_s).to eq alice.display_name
expect(mf2.entry.in_reply_to.format.author.format.url.to_s).not_to be_empty
end
+
+ it 'has valid opengraph tags' do
+ alice = Fabricate(:account, username: 'alice', display_name: 'Alice')
+ status = Fabricate(:status, account: alice, text: 'Hello World')
+
+ assign(:status, status)
+ assign(:stream_entry, status.stream_entry)
+ assign(:account, alice)
+ assign(:type, status.stream_entry.activity_type.downcase)
+
+ render
+
+ header_tags = view.content_for(:header_tags)
+
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ end
end