Fix crash when processing Flag activity with no status (#26189)
This commit is contained in:
		
							parent
							
								
									b4e739ff0f
								
							
						
					
					
						commit
						6c3c5bbbc3
					
				| @ -9,7 +9,7 @@ class ActivityPub::Activity::Flag < ActivityPub::Activity | ||||
| 
 | ||||
|     target_accounts.each do |target_account| | ||||
|       target_statuses     = target_statuses_by_account[target_account.id] | ||||
|       replied_to_accounts = Account.local.where(id: target_statuses.filter_map(&:in_reply_to_account_id)) | ||||
|       replied_to_accounts = target_statuses.nil? ? [] : Account.local.where(id: target_statuses.filter_map(&:in_reply_to_account_id)) | ||||
| 
 | ||||
|       next if target_account.suspended? || (!target_account.local? && replied_to_accounts.none?) | ||||
| 
 | ||||
|  | ||||
| @ -139,6 +139,35 @@ RSpec.describe ActivityPub::Activity::Flag do | ||||
|         expect(report.status_ids).to eq [] | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'when an account is passed but no status' do | ||||
|       let(:mentioned) { Fabricate(:account) } | ||||
| 
 | ||||
|       let(:json) do | ||||
|         { | ||||
|           '@context': 'https://www.w3.org/ns/activitystreams', | ||||
|           id: flag_id, | ||||
|           type: 'Flag', | ||||
|           content: 'Boo!!', | ||||
|           actor: ActivityPub::TagManager.instance.uri_for(sender), | ||||
|           object: [ | ||||
|             ActivityPub::TagManager.instance.uri_for(flagged), | ||||
|           ], | ||||
|         }.with_indifferent_access | ||||
|       end | ||||
| 
 | ||||
|       before do | ||||
|         subject.perform | ||||
|       end | ||||
| 
 | ||||
|       it 'creates a report with no attached status' do | ||||
|         report = Report.find_by(account: sender, target_account: flagged) | ||||
| 
 | ||||
|         expect(report).to_not be_nil | ||||
|         expect(report.comment).to eq 'Boo!!' | ||||
|         expect(report.status_ids).to eq [] | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#perform with a defined uri' do | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user