Fix undefined method error in sidekiq (#9807)
* Fix undefined method error in sidekiq Body can be not nil but still be empty, which causes a `NoMethodError: undefined method `[]' for nil:NilClass` further in the code. This checks for an empty body to avoid the issue. * Fix codeclimate issue
This commit is contained in:
		
				
					committed by
					
						 Eugen Rochko
						Eugen Rochko
					
				
			
			
				
	
			
			
			
						parent
						
							b4e6384aea
						
					
				
				
					commit
					5c5e14c816
				
			| @@ -43,7 +43,7 @@ class FetchOEmbedService | ||||
|       res.code != 200 ? nil : res.body_with_limit | ||||
|     end | ||||
|  | ||||
|     validate(parse_for_format(body)) unless body.nil? | ||||
|     validate(parse_for_format(body)) if body.present? | ||||
|   rescue Oj::ParseError, Ox::ParseError | ||||
|     nil | ||||
|   end | ||||
|   | ||||
							
								
								
									
										7
									
								
								spec/fixtures/requests/oembed_json_empty.html
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								spec/fixtures/requests/oembed_json_empty.html
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|   <head> | ||||
|     <link href='https://host.test/empty_provider.json' rel='alternate' type='application/json+oembed'> | ||||
|   </head> | ||||
|   <body></body> | ||||
| </html> | ||||
| @@ -8,6 +8,7 @@ describe FetchOEmbedService, type: :service do | ||||
|   before do | ||||
|     stub_request(:get, "https://host.test/provider.json").to_return(status: 404) | ||||
|     stub_request(:get, "https://host.test/provider.xml").to_return(status: 404) | ||||
|     stub_request(:get, "https://host.test/empty_provider.json").to_return(status: 200) | ||||
|   end | ||||
|  | ||||
|   describe 'discover_provider' do | ||||
| @@ -93,6 +94,23 @@ describe FetchOEmbedService, type: :service do | ||||
|           expect(subject.call('https://host.test/oembed.html')).to be_nil | ||||
|         end | ||||
|       end | ||||
|  | ||||
|       context 'Empty JSON provider is discoverable' do | ||||
|         before do | ||||
|           stub_request(:get, 'https://host.test/oembed.html').to_return( | ||||
|             status: 200, | ||||
|             headers: { 'Content-Type': 'text/html' }, | ||||
|             body: request_fixture('oembed_json_empty.html') | ||||
|           ) | ||||
|         end | ||||
|  | ||||
|         it 'returns new OEmbed::Provider for JSON provider' do | ||||
|           subject.call('https://host.test/oembed.html') | ||||
|           expect(subject.endpoint_url).to eq 'https://host.test/empty_provider.json' | ||||
|           expect(subject.format).to eq :json | ||||
|         end | ||||
|       end | ||||
|  | ||||
|     end | ||||
|  | ||||
|     context 'when status code is not 200' do | ||||
|   | ||||
		Reference in New Issue
	
	Block a user