@ -5,11 +5,11 @@ RSpec.describe ProcessMentionsService, type: :service do
let ( :visibility ) { :public }
let ( :status ) { Fabricate ( :status , account : account , text : " Hello @ #{ remote_user . acct } " , visibility : visibility ) }
subject { ProcessMentionsService . new }
context 'OStatus with public toot' do
let ( :remote_user ) { Fabricate ( :account , username : 'remote_user' , protocol : :ostatus , domain : 'example.com' , salmon_url : 'http://salmon.example.com' ) }
subject { ProcessMentionsService . new }
before do
stub_request ( :post , remote_user . salmon_url )
subject . call ( status )
@ -24,8 +24,6 @@ RSpec.describe ProcessMentionsService, type: :service do
let ( :visibility ) { :private }
let ( :remote_user ) { Fabricate ( :account , username : 'remote_user' , protocol : :ostatus , domain : 'example.com' , salmon_url : 'http://salmon.example.com' ) }
subject { ProcessMentionsService . new }
before do
stub_request ( :post , remote_user . salmon_url )
subject . call ( status )
@ -41,9 +39,26 @@ RSpec.describe ProcessMentionsService, type: :service do
end
context 'ActivityPub' do
context do
let ( :remote_user ) { Fabricate ( :account , username : 'remote_user' , protocol : :activitypub , domain : 'example.com' , inbox_url : 'http://example.com/inbox' ) }
subject { ProcessMentionsService . new }
before do
stub_request ( :post , remote_user . inbox_url )
subject . call ( status )
end
it 'creates a mention' do
expect ( remote_user . mentions . where ( status : status ) . count ) . to eq 1
end
it 'sends activity to the inbox' do
expect ( a_request ( :post , remote_user . inbox_url ) ) . to have_been_made . once
end
end
context 'with an IDN domain' do
let ( :remote_user ) { Fabricate ( :account , username : 'sneak' , protocol : :activitypub , domain : 'xn--hresiar-mxa.ch' , inbox_url : 'http://example.com/inbox' ) }
let ( :status ) { Fabricate ( :status , account : account , text : " Hello @sneak@hæresiar.ch " ) }
before do
stub_request ( :post , remote_user . inbox_url )
@ -58,12 +73,11 @@ RSpec.describe ProcessMentionsService, type: :service do
expect ( a_request ( :post , remote_user . inbox_url ) ) . to have_been_made . once
end
end
end
context 'Temporarily-unreachable ActivityPub user' do
let ( :remote_user ) { Fabricate ( :account , username : 'remote_user' , protocol : :activitypub , domain : 'example.com' , inbox_url : 'http://example.com/inbox' , last_webfingered_at : nil ) }
subject { ProcessMentionsService . new }
before do
stub_request ( :get , " https://example.com/.well-known/host-meta " ) . to_return ( status : 404 )
stub_request ( :get , " https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com " ) . to_return ( status : 500 )