Prevent from publicly boosting one's own private toots (#10775)

This commit is contained in:
ThibG 2019-05-18 00:28:51 +02:00 committed by Eugen Rochko
parent e976a9dfbd
commit a1519a8ef5
2 changed files with 13 additions and 3 deletions

View file

@ -18,7 +18,9 @@ class ReblogService < BaseService
return reblog unless reblog.nil? return reblog unless reblog.nil?
reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: options[:visibility] || account.user&.setting_default_privacy) visibility = options[:visibility] || account.user&.setting_default_privacy
visibility = reblogged_status.visibility if reblogged_status.hidden?
reblog = account.statuses.create!(reblog: reblogged_status, text: '', visibility: visibility)
DistributionWorker.perform_async(reblog.id) DistributionWorker.perform_async(reblog.id)
Pubsubhubbub::DistributionWorker.perform_async(reblog.stream_entry.id) Pubsubhubbub::DistributionWorker.perform_async(reblog.stream_entry.id)

View file

@ -4,10 +4,9 @@ RSpec.describe ReblogService, type: :service do
let(:alice) { Fabricate(:account, username: 'alice') } let(:alice) { Fabricate(:account, username: 'alice') }
context 'creates a reblog with appropriate visibility' do context 'creates a reblog with appropriate visibility' do
let(:bob) { Fabricate(:account, username: 'bob') }
let(:visibility) { :public } let(:visibility) { :public }
let(:reblog_visibility) { :public } let(:reblog_visibility) { :public }
let(:status) { Fabricate(:status, account: bob, visibility: visibility) } let(:status) { Fabricate(:status, account: alice, visibility: visibility) }
subject { ReblogService.new } subject { ReblogService.new }
@ -22,6 +21,15 @@ RSpec.describe ReblogService, type: :service do
expect(status.reblogs.first.visibility).to eq 'private' expect(status.reblogs.first.visibility).to eq 'private'
end end
end end
describe 'public reblogs of private toots should remain private' do
let(:visibility) { :private }
let(:reblog_visibility) { :public }
it 'reblogs privately' do
expect(status.reblogs.first.visibility).to eq 'private'
end
end
end end
context 'OStatus' do context 'OStatus' do