end
def visibility_from_audience
- if audience_to.include?(ActivityPub::TagManager::COLLECTIONS[:public])
+ if audience_to.any? { |to| ActivityPub::TagManager.instance.public_collection?(to) }
:public
- elsif audience_cc.include?(ActivityPub::TagManager::COLLECTIONS[:public])
+ elsif audience_cc.any? { |cc| ActivityPub::TagManager.instance.public_collection?(cc) }
:unlisted
elsif audience_to.include?(@account.followers_url)
:private
def process_audience
(audience_to + audience_cc).uniq.each do |audience|
- next if audience == ActivityPub::TagManager::COLLECTIONS[:public]
+ next if ActivityPub::TagManager.instance.public_collection?(audience)
# Unlike with tags, there is no point in resolving accounts we don't already
# know here, because silent mentions would only be used for local access
end
def visibility_from_audience
- if audience_to.include?(ActivityPub::TagManager::COLLECTIONS[:public])
+ if audience_to.any? { |to| ActivityPub::TagManager.instance.public_collection?(to) }
:public
- elsif audience_cc.include?(ActivityPub::TagManager::COLLECTIONS[:public])
+ elsif audience_cc.any? { |cc| ActivityPub::TagManager.instance.public_collection?(cc) }
:unlisted
elsif audience_to.include?(@account.followers_url)
:private
end
end
- context 'public' do
+ context 'public with explicit public address' do
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
end
end
- context 'unlisted' do
+ context 'public with as:Public' do
+ let(:object_json) do
+ {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ type: 'Note',
+ content: 'Lorem ipsum',
+ to: 'as:Public',
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+
+ expect(status).to_not be_nil
+ expect(status.visibility).to eq 'public'
+ end
+ end
+
+ context 'public with Public' do
+ let(:object_json) do
+ {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ type: 'Note',
+ content: 'Lorem ipsum',
+ to: 'Public',
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+
+ expect(status).to_not be_nil
+ expect(status.visibility).to eq 'public'
+ end
+ end
+
+ context 'unlisted with explicit public address' do
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
end
end
+ context 'unlisted with as:Public' do
+ let(:object_json) do
+ {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ type: 'Note',
+ content: 'Lorem ipsum',
+ cc: 'as:Public',
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+
+ expect(status).to_not be_nil
+ expect(status.visibility).to eq 'unlisted'
+ end
+ end
+
+ context 'unlisted with Public' do
+ let(:object_json) do
+ {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ type: 'Note',
+ content: 'Lorem ipsum',
+ cc: 'Public',
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+
+ expect(status).to_not be_nil
+ expect(status.visibility).to eq 'unlisted'
+ end
+ end
+
context 'private' do
let(:object_json) do
{