Fix reblogs privacy (#10302)

* Fix reblogs privacy

* Fix Announce processing specs
pull/963/head
ThibG 2019-03-17 14:54:09 +01:00 committed by Eugen Rochko
parent c92a1cf5c1
commit 5e38ef87a7
3 changed files with 23 additions and 1 deletions

View File

@ -453,8 +453,8 @@ class Status < ApplicationRecord
end end
def set_visibility def set_visibility
self.visibility = reblog.visibility if reblog? && visibility.nil?
self.visibility = (account.locked? ? :private : :public) if visibility.nil? self.visibility = (account.locked? ? :private : :public) if visibility.nil?
self.visibility = reblog.visibility if reblog?
self.sensitive = false if sensitive.nil? self.sensitive = false if sensitive.nil?
end end

View File

@ -12,6 +12,7 @@ RSpec.describe ActivityPub::Activity::Announce do
type: 'Announce', type: 'Announce',
actor: 'https://example.com/actor', actor: 'https://example.com/actor',
object: object_json, object: object_json,
to: 'http://example.com/followers',
}.with_indifferent_access }.with_indifferent_access
end end

View File

@ -3,6 +3,27 @@ require 'rails_helper'
RSpec.describe ReblogService, type: :service do 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
let(:bob) { Fabricate(:account, username: 'bob') }
let(:visibility) { :public }
let(:reblog_visibility) { :public }
let(:status) { Fabricate(:status, account: bob, visibility: visibility) }
subject { ReblogService.new }
before do
subject.call(alice, status, visibility: reblog_visibility)
end
describe 'boosting privately' do
let(:reblog_visibility) { :private }
it 'reblogs privately' do
expect(status.reblogs.first.visibility).to eq 'private'
end
end
end
context 'OStatus' do context 'OStatus' do
let(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://salmon.example.com') } 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') } let(:status) { Fabricate(:status, account: bob, uri: 'tag:example.com;something:something') }