@ -15,8 +15,11 @@ RSpec.describe RemoveStatusService, type: :service do
jeff . follow! ( alice )
hank . follow! ( alice )
end
@status = PostStatusService . new . call ( alice , text : 'Hello @bob@example.com' )
context 'when removed status is not a reblog' do
before do
@status = PostStatusService . new . call ( alice , text : 'Hello @bob@example.com ThisIsASecret' )
FavouriteService . new . call ( jeff , @status )
Fabricate ( :status , account : bill , reblog : @status , uri : 'hoge' )
end
@ -31,14 +34,32 @@ RSpec.describe RemoveStatusService, type: :service do
expect ( HomeFeed . new ( jeff ) . get ( 10 ) ) . to_not include ( @status . id )
end
it 'sends d elete activity to followers' do
it 'sends D elete activity to followers' do
subject . call ( @status )
expect ( a_request ( :post , 'http://example.com/inbox' ) ) . to have_been_made . twice
expect ( a_request ( :post , 'http://example.com/inbox' ) . with (
body : hash_including ( {
'type' = > 'Delete' ,
'object' = > {
'type' = > 'Tombstone' ,
'id' = > ActivityPub :: TagManager . instance . uri_for ( @status ) ,
'atomUri' = > OStatus :: TagManager . instance . uri_for ( @status ) ,
} ,
} )
) ) . to have_been_made . once
end
it 'sends delete activity to rebloggers' do
it 'sends D elete activity to rebloggers' do
subject . call ( @status )
expect ( a_request ( :post , 'http://example2.com/inbox' ) ) . to have_been_made
expect ( a_request ( :post , 'http://example2.com/inbox' ) . with (
body : hash_including ( {
'type' = > 'Delete' ,
'object' = > {
'type' = > 'Tombstone' ,
'id' = > ActivityPub :: TagManager . instance . uri_for ( @status ) ,
'atomUri' = > OStatus :: TagManager . instance . uri_for ( @status ) ,
} ,
} )
) ) . to have_been_made . once
end
it 'remove status from notifications' do
@ -47,3 +68,44 @@ RSpec.describe RemoveStatusService, type: :service do
} . from ( 1 ) . to ( 0 )
end
end
context 'when removed status is a private self-reblog' do
before do
@original_status = Fabricate ( :status , account : alice , text : 'Hello ThisIsASecret' , visibility : :private )
@status = ReblogService . new . call ( alice , @original_status )
end
it 'sends Undo activity to followers' do
subject . call ( @status )
expect ( a_request ( :post , 'http://example.com/inbox' ) . with (
body : hash_including ( {
'type' = > 'Undo' ,
'object' = > hash_including ( {
'type' = > 'Announce' ,
'object' = > ActivityPub :: TagManager . instance . uri_for ( @original_status ) ,
} ) ,
} )
) ) . to have_been_made . once
end
end
context 'when removed status is public self-reblog' do
before do
@original_status = Fabricate ( :status , account : alice , text : 'Hello ThisIsASecret' , visibility : :public )
@status = ReblogService . new . call ( alice , @original_status )
end
it 'sends Undo activity to followers' do
subject . call ( @status )
expect ( a_request ( :post , 'http://example.com/inbox' ) . with (
body : hash_including ( {
'type' = > 'Undo' ,
'object' = > hash_including ( {
'type' = > 'Announce' ,
'object' = > ActivityPub :: TagManager . instance . uri_for ( @original_status ) ,
} ) ,
} )
) ) . to have_been_made . once
end
end
end