From f84dae2db658b5698d2112ff12431830f949e07a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Thu, 7 Dec 2023 10:06:07 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Fix:=20=E4=B8=80=E9=83=A8=E7=92=B0=E5=A2=83?= =?UTF-8?q?=E3=81=A7=E3=83=9E=E3=82=A4=E3=82=B0=E3=83=AC=E3=83=BC=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E5=95=8F?= =?UTF-8?q?=E9=A1=8C=20(#336)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: 一部環境でマイグレーションできない問題 * Fix * Fix * Add settings test --- ...5225839_add_master_settings_to_accounts.rb | 28 +++---------------- .../process_account_service_spec.rb | 26 +++++++++++++++++ 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/db/migrate/20231105225839_add_master_settings_to_accounts.rb b/db/migrate/20231105225839_add_master_settings_to_accounts.rb index 25f6886c6a..24e3e107f9 100644 --- a/db/migrate/20231105225839_add_master_settings_to_accounts.rb +++ b/db/migrate/20231105225839_add_master_settings_to_accounts.rb @@ -13,18 +13,8 @@ class AddMasterSettingsToAccounts < ActiveRecord::Migration[7.1] safety_assured do add_column :accounts, :master_settings, :jsonb - if Rails.env.test? - Account.transaction do - Account.find_in_batches do |accounts| - accounts.each do |account| - account.update(master_settings: { 'subscription_policy' => account.dissubscribable ? 'block' : 'allow' }) - end - end - end - else - Account.where(dissubscribable: true).update_all(master_settings: { 'subscription_policy' => 'block' }) # rubocop:disable Rails/SkipsModelValidations - Account.where(dissubscribable: false).update_all(master_settings: { 'subscription_policy' => 'allow' }) # rubocop:disable Rails/SkipsModelValidations - end + ActiveRecord::Base.connection.execute("UPDATE accounts SET master_settings = json_build_object('subscription_policy', 'block') WHERE accounts.dissubscribable IS TRUE") + ActiveRecord::Base.connection.execute("UPDATE accounts SET master_settings = json_build_object('subscription_policy', 'allow') WHERE accounts.dissubscribable IS FALSE") remove_column :accounts, :dissubscribable end @@ -34,18 +24,8 @@ class AddMasterSettingsToAccounts < ActiveRecord::Migration[7.1] safety_assured do add_column_with_default :accounts, :dissubscribable, :boolean, default: false, allow_null: false - if Rails.env.test? - Account.transaction do - Account.find_in_batches do |accounts| - accounts.each do |account| - account.update(dissubscribable: account.master_settings.present? && account.master_settings['subscription_policy'] != 'allow') - end - end - end - else - Account.where(master_settings: { subscription_policy: 'block' }).update_all(dissubscribable: true) # rubocop:disable Rails/SkipsModelValidations - Account.where(master_settings: { subscription_policy: 'allow' }).update_all(dissubscribable: false) # rubocop:disable Rails/SkipsModelValidations - end + ActiveRecord::Base.connection.execute("UPDATE accounts SET dissubscribable = TRUE WHERE master_settings ->> 'subscription_policy' = 'block'") + ActiveRecord::Base.connection.execute("UPDATE accounts SET dissubscribable = FALSE WHERE master_settings ->> 'subscription_policy' = 'allow'") remove_column :accounts, :master_settings end diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb index 40644db509..f0885ff672 100644 --- a/spec/services/activitypub/process_account_service_spec.rb +++ b/spec/services/activitypub/process_account_service_spec.rb @@ -252,6 +252,32 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do end end + context 'with other settings' do + let(:payload) do + { + id: 'https://foo.test', + type: 'Actor', + inbox: 'https://foo.test/inbox', + otherSetting: [ + { type: 'PropertyValue', name: 'Pronouns', value: 'They/them' }, + { type: 'PropertyValue', name: 'Occupation', value: 'Unit test' }, + ], + }.with_indifferent_access + end + + before do + stub_request(:get, 'https://example.com/.well-known/nodeinfo').to_return(body: '{}') + end + + it 'parses out of attachment' do + account = subject.call('alice', 'example.com', payload) + expect(account.settings).to be_a Hash + expect(account.settings.size).to eq 2 + expect(account.settings['Pronouns']).to eq 'They/them' + expect(account.settings['Occupation']).to eq 'Unit test' + end + end + context 'when account is not suspended' do subject { described_class.new.call('alice', 'example.com', payload) } From fdecd967bfb94615164f8a2042efc49e60ad054f Mon Sep 17 00:00:00 2001 From: KMY Date: Thu, 7 Dec 2023 10:07:30 +0900 Subject: [PATCH 2/2] Bump version to 9.3 --- lib/mastodon/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 4435a5cb58..c0f90aad19 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -9,7 +9,7 @@ module Mastodon end def kmyblue_minor - 2 + 3 end def kmyblue_flag