From 44f6d285af45682b5ddb7225bfdc56b48cd27a91 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 26 Jan 2024 12:44:12 -0500 Subject: [PATCH] Combine repeated subject in ap fetch remote actor service spec (#28953) --- .../fetch_remote_actor_service_spec.rb | 87 +++++-------------- 1 file changed, 21 insertions(+), 66 deletions(-) diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb index 93d31b69d5..485ca81a11 100644 --- a/spec/services/activitypub/fetch_remote_actor_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb @@ -21,20 +21,14 @@ RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do let(:account) { subject.call('https://example.com/alice', id: true) } shared_examples 'sets profile data' do - it 'returns an account' do - expect(account).to be_an Account - end - - it 'sets display name' do - expect(account.display_name).to eq 'Alice' - end - - it 'sets note' do - expect(account.note).to eq 'Foo bar' - end - - it 'sets URL' do - expect(account.url).to eq 'https://example.com/alice' + it 'returns an account and sets attributes' do + expect(account) + .to be_an(Account) + .and have_attributes( + display_name: eq('Alice'), + note: eq('Foo bar'), + url: eq('https://example.com/alice') + ) end end @@ -48,19 +42,12 @@ RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) end - it 'fetches resource' do - account - expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once - end + it 'fetches resource and looks up webfinger and returns nil' do + expect(account).to be_nil - it 'looks up webfinger' do - account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once end - - it 'returns nil' do - expect(account).to be_nil - end end context 'when URI and WebFinger share the same host' do @@ -71,17 +58,12 @@ RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) end - it 'fetches resource' do + it 'fetches resource and looks up webfinger and sets values' do account - expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once - end - it 'looks up webfinger' do - account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once - end - it 'sets username and domain from webfinger' do expect(account.username).to eq 'alice' expect(account.domain).to eq 'example.com' end @@ -98,22 +80,13 @@ RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) end - it 'fetches resource' do + it 'fetches resource and looks up webfinger and follows redirect and sets values' do account - expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once - end - it 'looks up webfinger' do - account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once - end - - it 'looks up "redirected" webfinger' do - account expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once - end - it 'sets username and domain from final webfinger' do expect(account.username).to eq 'alice' expect(account.domain).to eq 'iscool.af' end @@ -129,19 +102,12 @@ RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) end - it 'fetches resource' do - account - expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once - end + it 'fetches resource and looks up webfinger and does not create account' do + expect(account).to be_nil - it 'looks up webfinger' do - account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once end - - it 'does not create account' do - expect(account).to be_nil - end end context 'when WebFinger returns a different URI after a redirection' do @@ -153,24 +119,13 @@ RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) end - it 'fetches resource' do - account - expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once - end + it 'fetches resource and looks up webfinger and follows redirect and does not create account' do + expect(account).to be_nil - it 'looks up webfinger' do - account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once - end - - it 'looks up "redirected" webfinger' do - account expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once end - - it 'does not create account' do - expect(account).to be_nil - end end context 'with wrong id' do