about summary refs log tree commit diff
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-03-17 14:54:09 +0100
committerEugen Rochko <eugen@zeonfederated.com>2019-03-17 14:54:09 +0100
commit5e38ef87a7b8bac59ffa0d98464086ab8a60a2e1 (patch)
treeeef6fdfe5269ac9bfaca98614342ce5b1bec44ce
parentc92a1cf5c1a499b9941c1526d90ed0445e072850 (diff)
Fix reblogs privacy (#10302)
* Fix reblogs privacy

* Fix Announce processing specs
-rw-r--r--app/models/status.rb2
-rw-r--r--spec/lib/activitypub/activity/announce_spec.rb1
-rw-r--r--spec/services/reblog_service_spec.rb21
3 files changed, 23 insertions, 1 deletions
diff --git a/app/models/status.rb b/app/models/status.rb
index 571167943..b9479c76b 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -453,8 +453,8 @@ class Status < ApplicationRecord
   end
 
   def set_visibility
+    self.visibility = reblog.visibility if reblog? && visibility.nil?
     self.visibility = (account.locked? ? :private : :public) if visibility.nil?
-    self.visibility = reblog.visibility if reblog?
     self.sensitive  = false if sensitive.nil?
   end
 
diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb
index aa58d9e23..926083a4f 100644
--- a/spec/lib/activitypub/activity/announce_spec.rb
+++ b/spec/lib/activitypub/activity/announce_spec.rb
@@ -12,6 +12,7 @@ RSpec.describe ActivityPub::Activity::Announce do
       type: 'Announce',
       actor: 'https://example.com/actor',
       object: object_json,
+      to: 'http://example.com/followers',
     }.with_indifferent_access
   end
 
diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb
index 2755da772..9e66c6643 100644
--- a/spec/services/reblog_service_spec.rb
+++ b/spec/services/reblog_service_spec.rb
@@ -3,6 +3,27 @@ require 'rails_helper'
 RSpec.describe ReblogService, type: :service do
   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
     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') }