* Add missing specs for relay accept/reject * Display pending message on admin relays UImaster
@@ -2,20 +2,24 @@ | |||||
%td | %td | ||||
%samp= relay.inbox_url | %samp= relay.inbox_url | ||||
%td | %td | ||||
- if relay.enabled? | |||||
- if relay.accepted? | |||||
%span.positive-hint | %span.positive-hint | ||||
= fa_icon('check') | = fa_icon('check') | ||||
= ' ' | = ' ' | ||||
= t 'admin.relays.enabled' | = t 'admin.relays.enabled' | ||||
- elsif relay.pending? | |||||
= fa_icon('hourglass') | |||||
= ' ' | |||||
= t 'admin.relays.pending' | |||||
- else | - else | ||||
%span.negative-hint | %span.negative-hint | ||||
= fa_icon('times') | = fa_icon('times') | ||||
= ' ' | = ' ' | ||||
= t 'admin.relays.disabled' | = t 'admin.relays.disabled' | ||||
%td | %td | ||||
- if relay.enabled? | |||||
- if relay.accepted? | |||||
= table_link_to 'power-off', t('admin.relays.disable'), disable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } | = table_link_to 'power-off', t('admin.relays.disable'), disable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } | ||||
- else | |||||
- elsif !relay.pending? | |||||
= table_link_to 'power-off', t('admin.relays.enable'), enable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } | = table_link_to 'power-off', t('admin.relays.enable'), enable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } | ||||
= table_link_to 'times', t('admin.relays.delete'), admin_relay_path(relay), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } | = table_link_to 'times', t('admin.relays.delete'), admin_relay_path(relay), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } |
@@ -303,6 +303,7 @@ en: | |||||
description_html: A <strong>federation relay</strong> is an intermediary server that exchanges large volumes of public toots between servers that subscribe and publish to it. <strong>It can help small and medium servers discover content from the fediverse</strong>, which would otherwise require local users manually following other people on remote servers. | description_html: A <strong>federation relay</strong> is an intermediary server that exchanges large volumes of public toots between servers that subscribe and publish to it. <strong>It can help small and medium servers discover content from the fediverse</strong>, which would otherwise require local users manually following other people on remote servers. | ||||
enable_hint: Once enabled, your server will subscribe to all public toots from this relay, and will begin sending this server's public toots to it. | enable_hint: Once enabled, your server will subscribe to all public toots from this relay, and will begin sending this server's public toots to it. | ||||
inbox_url: Relay URL | inbox_url: Relay URL | ||||
pending: Waiting for relay's approval | |||||
setup: Setup a relay connection | setup: Setup a relay connection | ||||
status: Status | status: Status | ||||
title: Relays | title: Relays | ||||
@@ -1,4 +1,4 @@ | |||||
Fabricator(:relay) do | Fabricator(:relay) do | ||||
inbox_url "https://example.com/inbox" | inbox_url "https://example.com/inbox" | ||||
enabled true | |||||
state :idle | |||||
end | end |
@@ -35,4 +35,30 @@ RSpec.describe ActivityPub::Activity::Accept do | |||||
expect(recipient.requested?(sender)).to be false | expect(recipient.requested?(sender)).to be false | ||||
end | end | ||||
end | end | ||||
context 'given a relay' do | |||||
let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') } | |||||
let(:json) do | |||||
{ | |||||
'@context': 'https://www.w3.org/ns/activitystreams', | |||||
id: 'foo', | |||||
type: 'Accept', | |||||
actor: ActivityPub::TagManager.instance.uri_for(sender), | |||||
object: { | |||||
id: 'https://abc-123/456', | |||||
type: 'Follow', | |||||
actor: ActivityPub::TagManager.instance.uri_for(recipient), | |||||
object: ActivityPub::TagManager.instance.uri_for(sender), | |||||
}, | |||||
}.with_indifferent_access | |||||
end | |||||
subject { described_class.new(json, sender) } | |||||
it 'marks the relay as accepted' do | |||||
subject.perform | |||||
expect(relay.reload.accepted?).to be true | |||||
end | |||||
end | |||||
end | end |
@@ -35,4 +35,30 @@ RSpec.describe ActivityPub::Activity::Reject do | |||||
expect(recipient.requested?(sender)).to be false | expect(recipient.requested?(sender)).to be false | ||||
end | end | ||||
end | end | ||||
context 'given a relay' do | |||||
let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') } | |||||
let(:json) do | |||||
{ | |||||
'@context': 'https://www.w3.org/ns/activitystreams', | |||||
id: 'foo', | |||||
type: 'Reject', | |||||
actor: ActivityPub::TagManager.instance.uri_for(sender), | |||||
object: { | |||||
id: 'https://abc-123/456', | |||||
type: 'Follow', | |||||
actor: ActivityPub::TagManager.instance.uri_for(recipient), | |||||
object: ActivityPub::TagManager.instance.uri_for(sender), | |||||
}, | |||||
}.with_indifferent_access | |||||
end | |||||
subject { described_class.new(json, sender) } | |||||
it 'marks the relay as rejected' do | |||||
subject.perform | |||||
expect(relay.reload.rejected?).to be true | |||||
end | |||||
end | |||||
end | end |