diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-08-28 05:39:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-28 05:39:43 +0200 |
commit | 5e1767173f82672c77e4d1ce5d9f252750e5f96d (patch) | |
tree | 4699f8e757aa530206ee935e3ebb5cf36aba19db | |
parent | 2bbec9f4dab1441391983ce920b6a0094f0e0348 (diff) |
Display pending message on admin relays UI (#8494)
* Add missing specs for relay accept/reject * Display pending message on admin relays UI
-rw-r--r-- | app/views/admin/relays/_relay.html.haml | 10 | ||||
-rw-r--r-- | config/locales/en.yml | 1 | ||||
-rw-r--r-- | spec/fabricators/relay_fabricator.rb | 2 | ||||
-rw-r--r-- | spec/lib/activitypub/activity/accept_spec.rb | 26 | ||||
-rw-r--r-- | spec/lib/activitypub/activity/reject_spec.rb | 26 |
5 files changed, 61 insertions, 4 deletions
diff --git a/app/views/admin/relays/_relay.html.haml b/app/views/admin/relays/_relay.html.haml index d974c80a6..667821894 100644 --- a/app/views/admin/relays/_relay.html.haml +++ b/app/views/admin/relays/_relay.html.haml @@ -2,20 +2,24 @@ %td %samp= relay.inbox_url %td - - if relay.enabled? + - if relay.accepted? %span.positive-hint = fa_icon('check') = ' ' = t 'admin.relays.enabled' + - elsif relay.pending? + = fa_icon('hourglass') + = ' ' + = t 'admin.relays.pending' - else %span.negative-hint = fa_icon('times') = ' ' = t 'admin.relays.disabled' %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') } - - 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 'times', t('admin.relays.delete'), admin_relay_path(relay), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/config/locales/en.yml b/config/locales/en.yml index aa7efff84..4f893716b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -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. 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 + pending: Waiting for relay's approval setup: Setup a relay connection status: Status title: Relays diff --git a/spec/fabricators/relay_fabricator.rb b/spec/fabricators/relay_fabricator.rb index 2c9df4ad3..3f8726f6b 100644 --- a/spec/fabricators/relay_fabricator.rb +++ b/spec/fabricators/relay_fabricator.rb @@ -1,4 +1,4 @@ Fabricator(:relay) do inbox_url "https://example.com/inbox" - enabled true + state :idle end diff --git a/spec/lib/activitypub/activity/accept_spec.rb b/spec/lib/activitypub/activity/accept_spec.rb index 6503c83e3..883bab6ac 100644 --- a/spec/lib/activitypub/activity/accept_spec.rb +++ b/spec/lib/activitypub/activity/accept_spec.rb @@ -35,4 +35,30 @@ RSpec.describe ActivityPub::Activity::Accept do expect(recipient.requested?(sender)).to be false 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 diff --git a/spec/lib/activitypub/activity/reject_spec.rb b/spec/lib/activitypub/activity/reject_spec.rb index 7fd95bcc6..e7205df8d 100644 --- a/spec/lib/activitypub/activity/reject_spec.rb +++ b/spec/lib/activitypub/activity/reject_spec.rb @@ -35,4 +35,30 @@ RSpec.describe ActivityPub::Activity::Reject do expect(recipient.requested?(sender)).to be false 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 |