Skip to content
This repository has been archived by the owner on Dec 21, 2023. It is now read-only.

Commit

Permalink
Remove PubSubHubbub-related columns from accounts table (mastodon#16170)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gargron authored May 7, 2021
1 parent d8e0c8a commit 1294f9e
Show file tree
Hide file tree
Showing 15 changed files with 24 additions and 208 deletions.
14 changes: 8 additions & 6 deletions app/models/account.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,8 @@
# id :bigint(8) not null, primary key
# username :string default(""), not null
# domain :string
# secret :string default(""), not null
# private_key :text
# public_key :text default(""), not null
# remote_url :string default(""), not null
# salmon_url :string default(""), not null
# hub_url :string default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
# note :text default(""), not null
Expand Down Expand Up @@ -49,12 +45,18 @@
# avatar_storage_schema_version :integer
# header_storage_schema_version :integer
# devices_url :string
# sensitized_at :datetime
# suspension_origin :integer
# sensitized_at :datetime
#

class Account < ApplicationRecord
self.ignored_columns = %w(subscription_expires_at)
self.ignored_columns = %w(
subscription_expires_at
secret
remote_url
salmon_url
hub_url
)

USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i
MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[a-z0-9]+)?)/i
Expand Down
12 changes: 12 additions & 0 deletions db/post_migrate/20210507001928_remove_hub_url_from_accounts.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# frozen_string_literal: true

class RemoveHubURLFromAccounts < ActiveRecord::Migration[5.2]
def change
safety_assured do
remove_column :accounts, :secret, :string, null: false, default: ''
remove_column :accounts, :remote_url, :string, null: false, default: ''
remove_column :accounts, :salmon_url, :string, null: false, default: ''
remove_column :accounts, :hub_url, :string, null: false, default: ''
end
end
end
6 changes: 1 addition & 5 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 2021_05_05_174616) do
ActiveRecord::Schema.define(version: 2021_05_07_001928) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
Expand Down Expand Up @@ -136,12 +136,8 @@
create_table "accounts", id: :bigint, default: -> { "timestamp_id('accounts'::text)" }, force: :cascade do |t|
t.string "username", default: "", null: false
t.string "domain"
t.string "secret", default: "", null: false
t.text "private_key"
t.text "public_key", default: "", null: false
t.string "remote_url", default: "", null: false
t.string "salmon_url", default: "", null: false
t.string "hub_url", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.text "note", default: "", null: false
Expand Down
6 changes: 1 addition & 5 deletions spec/controllers/relationships_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,7 @@
end

describe 'PATCH #update' do
let(:poopfeast) { Fabricate(:account, username: 'poopfeast', domain: 'example.com', salmon_url: 'http://example.com/salmon') }

before do
stub_request(:post, 'http://example.com/salmon').to_return(status: 200)
end
let(:poopfeast) { Fabricate(:account, username: 'poopfeast', domain: 'example.com') }

shared_examples 'redirects back to followers page' do
it 'redirects back to followers page' do
Expand Down
18 changes: 0 additions & 18 deletions spec/services/authorize_follow_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,6 @@
end
end

describe 'remote OStatus' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://salmon.example.com')).account }

before do
FollowRequest.create(account: bob, target_account: sender)
stub_request(:post, "http://salmon.example.com/").to_return(:status => 200, :body => "", :headers => {})
subject.call(bob, sender)
end

it 'removes follow request' do
expect(bob.requested?(sender)).to be false
end

it 'creates follow relation' do
expect(bob.following?(sender)).to be true
end
end

describe 'remote ActivityPub' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox')).account }

Expand Down
2 changes: 1 addition & 1 deletion spec/services/batched_remove_status_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
subject { BatchedRemoveStatusService.new }

let!(:alice) { Fabricate(:account) }
let!(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://example.com/salmon') }
let!(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com') }
let!(:jeff) { Fabricate(:user).account }
let!(:hank) { Fabricate(:account, username: 'hank', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }

Expand Down
13 changes: 0 additions & 13 deletions spec/services/block_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,6 @@
end
end

describe 'remote OStatus' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://salmon.example.com')).account }

before do
stub_request(:post, "http://salmon.example.com/").to_return(:status => 200, :body => "", :headers => {})
subject.call(sender, bob)
end

it 'creates a blocking relation' do
expect(sender.blocking?(bob)).to be true
end
end

describe 'remote ActivityPub' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }

Expand Down
14 changes: 0 additions & 14 deletions spec/services/favourite_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,6 @@
end
end

describe 'remote OStatus' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', protocol: :ostatus, domain: 'example.com', salmon_url: 'http://salmon.example.com')).account }
let(:status) { Fabricate(:status, account: bob, uri: 'tag:example.com:blahblah') }

before do
stub_request(:post, "http://salmon.example.com/").to_return(:status => 200, :body => "", :headers => {})
subject.call(sender, status)
end

it 'creates a favourite' do
expect(status.favourites.first).to_not be_nil
end
end

describe 'remote ActivityPub' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, protocol: :activitypub, username: 'bob', domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
let(:status) { Fabricate(:status, account: bob) }
Expand Down
52 changes: 0 additions & 52 deletions spec/services/fetch_remote_status_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,56 +31,4 @@
expect(status.text).to eq 'Lorem ipsum'
end
end

context 'protocol is :ostatus' do
subject { described_class.new }

before do
Fabricate(:account, username: 'tracer', domain: 'real.domain', remote_url: 'https://real.domain/users/tracer')
end

it 'does not create status with author at different domain' do
status_body = <<-XML.squish
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:mastodon="http://mastodon.social/schema/1.0">
<id>tag:real.domain,2017-04-27:objectId=4487555:objectType=Status</id>
<published>2017-04-27T13:49:25Z</published>
<updated>2017-04-27T13:49:25Z</updated>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<author>
<id>https://real.domain/users/tracer</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://real.domain/users/tracer</uri>
<name>tracer</name>
</author>
<content type="html">Overwatch rocks</content>
</entry>
XML

expect(subject.call('https://fake.domain/foo', status_body)).to be_nil
end

it 'does not create status with wrong id when id uses http format' do
status_body = <<-XML.squish
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:mastodon="http://mastodon.social/schema/1.0">
<id>https://other-real.domain/statuses/123</id>
<published>2017-04-27T13:49:25Z</published>
<updated>2017-04-27T13:49:25Z</updated>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<author>
<id>https://real.domain/users/tracer</id>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://real.domain/users/tracer</uri>
<name>tracer</name>
</author>
<content type="html">Overwatch rocks</content>
</entry>
XML

expect(subject.call('https://real.domain/statuses/456', status_body)).to be_nil
end
end
end
31 changes: 0 additions & 31 deletions spec/services/process_mentions_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,6 @@

subject { ProcessMentionsService.new }

context 'OStatus with public toot' do
let(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :ostatus, domain: 'example.com', salmon_url: 'http://salmon.example.com') }

before do
stub_request(:post, remote_user.salmon_url)
subject.call(status)
end

it 'does not create a mention' do
expect(remote_user.mentions.where(status: status).count).to eq 0
end
end

context 'OStatus with private toot' do
let(:visibility) { :private }
let(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :ostatus, domain: 'example.com', salmon_url: 'http://salmon.example.com') }

before do
stub_request(:post, remote_user.salmon_url)
subject.call(status)
end

it 'does not create a mention' do
expect(remote_user.mentions.where(status: status).count).to eq 0
end

it 'does not post to remote user\'s Salmon end point' do
expect(a_request(:post, remote_user.salmon_url)).to_not have_been_made
end
end

context 'ActivityPub' do
context do
let(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
Expand Down
16 changes: 0 additions & 16 deletions spec/services/reblog_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,22 +32,6 @@
end
end

context 'OStatus' do
let(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://salmon.example.com') }
let(:status) { Fabricate(:status, account: bob, uri: 'tag:example.com;something:something') }

subject { ReblogService.new }

before do
stub_request(:post, 'http://salmon.example.com')
subject.call(alice, status)
end

it 'creates a reblog' do
expect(status.reblogs.count).to eq 1
end
end

context 'ActivityPub' do
let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
let(:status) { Fabricate(:status, account: bob) }
Expand Down
18 changes: 0 additions & 18 deletions spec/services/reject_follow_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,6 @@
end
end

describe 'remote OStatus' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://salmon.example.com')).account }

before do
FollowRequest.create(account: bob, target_account: sender)
stub_request(:post, "http://salmon.example.com/").to_return(:status => 200, :body => "", :headers => {})
subject.call(bob, sender)
end

it 'removes follow request' do
expect(bob.requested?(sender)).to be false
end

it 'does not create follow relation' do
expect(bob.following?(sender)).to be false
end
end

describe 'remote ActivityPub' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox')).account }

Expand Down
2 changes: 1 addition & 1 deletion spec/services/remove_status_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
subject { RemoveStatusService.new }

let!(:alice) { Fabricate(:account, user: Fabricate(:user)) }
let!(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://example.com/salmon') }
let!(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com') }
let!(:jeff) { Fabricate(:account) }
let!(:hank) { Fabricate(:account, username: 'hank', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
let!(:bill) { Fabricate(:account, username: 'bill', protocol: :activitypub, domain: 'example2.com', inbox_url: 'http://example2.com/inbox') }
Expand Down
14 changes: 0 additions & 14 deletions spec/services/unblock_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,6 @@
end
end

describe 'remote OStatus' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://salmon.example.com')).account }

before do
sender.block!(bob)
stub_request(:post, "http://salmon.example.com/").to_return(:status => 200, :body => "", :headers => {})
subject.call(sender, bob)
end

it 'destroys the blocking relation' do
expect(sender.blocking?(bob)).to be false
end
end

describe 'remote ActivityPub' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }

Expand Down
14 changes: 0 additions & 14 deletions spec/services/unfollow_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,6 @@
end
end

describe 'remote OStatus' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', protocol: :ostatus, domain: 'example.com', salmon_url: 'http://salmon.example.com')).account }

before do
sender.follow!(bob)
stub_request(:post, "http://salmon.example.com/").to_return(:status => 200, :body => "", :headers => {})
subject.call(sender, bob)
end

it 'destroys the following relation' do
expect(sender.following?(bob)).to be false
end
end

describe 'remote ActivityPub' do
let(:bob) { Fabricate(:user, email: '[email protected]', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }

Expand Down

0 comments on commit 1294f9e

Please sign in to comment.