| 
									
										
										
										
											2016-10-03 18:17:06 +02:00
										 |  |  | require 'rails_helper' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RSpec.describe UnblockService do | 
					
						
							| 
									
										
										
										
											2017-02-12 17:28:15 +01:00
										 |  |  |   let(:sender) { Fabricate(:account, username: 'alice') } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-03 18:17:06 +02:00
										 |  |  |   subject { UnblockService.new } | 
					
						
							| 
									
										
										
										
											2017-02-12 17:28:15 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe 'local' do | 
					
						
							|  |  |  |     let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       sender.block!(bob) | 
					
						
							|  |  |  |       subject.call(sender, bob) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'destroys the blocking relation' do | 
					
						
							|  |  |  |       expect(sender.blocking?(bob)).to be false | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-13 00:44:41 +02:00
										 |  |  |   describe 'remote OStatus' do | 
					
						
							| 
									
										
										
										
											2017-02-12 17:28:15 +01:00
										 |  |  |     let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', domain: 'example.com', salmon_url: 'http://salmon.example.com')).account } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       sender.block!(bob) | 
					
						
							|  |  |  |       stub_request(:post, "http://salmon.example.com/").to_return(:status => 200, :body => "", :headers => {}) | 
					
						
							|  |  |  |       subject.call(sender, bob) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'destroys the blocking relation' do | 
					
						
							| 
									
										
										
										
											2017-08-13 00:44:41 +02:00
										 |  |  |       expect(sender.blocking?(bob)).to be false | 
					
						
							| 
									
										
										
										
											2017-02-12 17:28:15 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'sends an unblock salmon slap' do | 
					
						
							|  |  |  |       expect(a_request(:post, "http://salmon.example.com/").with { |req| | 
					
						
							|  |  |  |         xml = OStatus2::Salmon.new.unpack(req.body) | 
					
						
							| 
									
										
										
										
											2017-09-20 01:08:08 +09:00
										 |  |  |         xml.match(OStatus::TagManager::VERBS[:unblock]) | 
					
						
							| 
									
										
										
										
											2017-02-12 17:28:15 +01:00
										 |  |  |       }).to have_been_made.once | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-08-13 00:44:41 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe 'remote ActivityPub' do | 
					
						
							|  |  |  |     let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       sender.block!(bob) | 
					
						
							|  |  |  |       stub_request(:post, 'http://example.com/inbox').to_return(status: 200) | 
					
						
							|  |  |  |       subject.call(sender, bob) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'destroys the blocking relation' do | 
					
						
							|  |  |  |       expect(sender.blocking?(bob)).to be false | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'sends an unblock activity' do | 
					
						
							|  |  |  |       expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2016-10-03 18:17:06 +02:00
										 |  |  | end |