]> cat aescling's git repositories - mastodon.git/commitdiff
Remove PubSubHubbub-related columns from accounts table (#16170)
authorEugen Rochko <eugen@zeonfederated.com>
Fri, 7 May 2021 17:32:58 +0000 (19:32 +0200)
committerGitHub <noreply@github.com>
Fri, 7 May 2021 17:32:58 +0000 (19:32 +0200)
15 files changed:
app/models/account.rb
db/post_migrate/20210507001928_remove_hub_url_from_accounts.rb [new file with mode: 0644]
db/schema.rb
spec/controllers/relationships_controller_spec.rb
spec/services/authorize_follow_service_spec.rb
spec/services/batched_remove_status_service_spec.rb
spec/services/block_service_spec.rb
spec/services/favourite_service_spec.rb
spec/services/fetch_remote_status_service_spec.rb
spec/services/process_mentions_service_spec.rb
spec/services/reblog_service_spec.rb
spec/services/reject_follow_service_spec.rb
spec/services/remove_status_service_spec.rb
spec/services/unblock_service_spec.rb
spec/services/unfollow_service_spec.rb

index 994459338b0f978cc5f29212c25b8b16fd3871cb..2c5455d8e57f4caf43cfa8d4a8cd534a4009b47f 100644 (file)
@@ -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
 #  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
diff --git a/db/post_migrate/20210507001928_remove_hub_url_from_accounts.rb b/db/post_migrate/20210507001928_remove_hub_url_from_accounts.rb
new file mode 100644 (file)
index 0000000..83a1f5f
--- /dev/null
@@ -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
index 19b1afe00d2593707d09567208473f6cbc11ad7e..583bdf317d4a0de6ab8ef16279df4f730bf4d069 100644 (file)
@@ -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"
@@ -136,12 +136,8 @@ ActiveRecord::Schema.define(version: 2021_05_05_174616) do
   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
index 16e255afe118ea210dd06989a6bff7f2fced54e8..2056a2ac294176b0d41c99ccb1c6afd2c3b1c67a 100644 (file)
@@ -36,11 +36,7 @@ describe RelationshipsController do
   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
index ce56d57a6217673bd0ffa5b37bc1b260b048a720..8e5d8fb03a0f7337c65a909994482b87a63e01f1 100644 (file)
@@ -22,24 +22,6 @@ RSpec.describe AuthorizeFollowService, type: :service do
     end
   end
 
-  describe 'remote OStatus' do
-    let(:bob) { Fabricate(:user, email: 'bob@example.com', 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: 'bob@example.com', account: Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox')).account }
 
index c1f54a6fd2a6b2b9d14c27ba088bb9675c5b3040..4203952c60f313c17ef1c91e93885afbd7b69405 100644 (file)
@@ -4,7 +4,7 @@ RSpec.describe BatchedRemoveStatusService, type: :service do
   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') }
 
index de20dd026502ec95a271bd0c24d1a4d0a798d314..3714f09e9aca1fe595f420074dc8e8905ff0336a 100644 (file)
@@ -17,19 +17,6 @@ RSpec.describe BlockService, type: :service do
     end
   end
 
-  describe 'remote OStatus' do
-    let(:bob) { Fabricate(:user, email: 'bob@example.com', 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: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
 
index 4c29ea77b72c6d6beb7ddd4497886ad3a8a79316..fc7f58eb4244a6b8ae099c87a3ed3a1b1c83bdf5 100644 (file)
@@ -18,20 +18,6 @@ RSpec.describe FavouriteService, type: :service do
     end
   end
 
-  describe 'remote OStatus' do
-    let(:bob)    { Fabricate(:user, email: 'bob@example.com', 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: 'bob@example.com', account: Fabricate(:account, protocol: :activitypub, username: 'bob', domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
     let(:status) { Fabricate(:status, account: bob) }
index 1c4b4fee2645191581ee00544aa4fb1fe4a4ee92..0e63cc9eba9a29bfd86666074d25b9b937b5589b 100644 (file)
@@ -31,56 +31,4 @@ RSpec.describe FetchRemoteStatusService, type: :service do
       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
index c30de8eeb9c20f15a4686ab31753115e0a1f1649..3b2f9d6984c9e11f3ca4132c508b6f1d67b8d8ad 100644 (file)
@@ -7,37 +7,6 @@ RSpec.describe ProcessMentionsService, type: :service do
 
   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') }
index 58fb46f0ff1bb7f1bd7e1105632d30b69d8c67b6..e2077f282a2d04483a57899f1f732f88f573b0c5 100644 (file)
@@ -32,22 +32,6 @@ RSpec.describe ReblogService, type: :service do
     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) }
index 1aec060db7a8f9e20dba5c0d1140bd282eda0861..732cb07f7bcd7e4ba39bb3a819d7a37a1dc4656d 100644 (file)
@@ -22,24 +22,6 @@ RSpec.describe RejectFollowService, type: :service do
     end
   end
 
-  describe 'remote OStatus' do
-    let(:bob) { Fabricate(:user, email: 'bob@example.com', 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: 'bob@example.com', account: Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox')).account }
 
index 7ce75b2c72b7b9fec6e7ae600f79be18246b84cb..21fb0cd3531839455bcdc1cee3406e9de51d7a1b 100644 (file)
@@ -4,7 +4,7 @@ RSpec.describe RemoveStatusService, type: :service do
   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') }
index 6350c683441cd95676cf320466bbcc78a9b53c0a..c43ab24b0309a33419fef6bd4a42bf9a30bf5574 100644 (file)
@@ -18,20 +18,6 @@ RSpec.describe UnblockService, type: :service do
     end
   end
 
-  describe 'remote OStatus' do
-    let(:bob) { Fabricate(:user, email: 'bob@example.com', 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: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
 
index 84b5dafbc4f2dd12c494f27554afcbeedbdcd0da..7f0b575e4d6a99f8e7c80e0f1b15656636eefdab 100644 (file)
@@ -18,20 +18,6 @@ RSpec.describe UnfollowService, type: :service do
     end
   end
 
-  describe 'remote OStatus' do
-    let(:bob) { Fabricate(:user, email: 'bob@example.com', 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: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }