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 |       res.code != 200 ? nil : res.body_with_limit | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     validate(parse_for_format(body)) unless body.nil? |     validate(parse_for_format(body)) if body.present? | ||||||
|   rescue Oj::ParseError, Ox::ParseError |   rescue Oj::ParseError, Ox::ParseError | ||||||
|     nil |     nil | ||||||
|   end |   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 |   before do | ||||||
|     stub_request(:get, "https://host.test/provider.json").to_return(status: 404) |     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/provider.xml").to_return(status: 404) | ||||||
|  |     stub_request(:get, "https://host.test/empty_provider.json").to_return(status: 200) | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   describe 'discover_provider' do |   describe 'discover_provider' do | ||||||
| @@ -93,6 +94,23 @@ describe FetchOEmbedService, type: :service do | |||||||
|           expect(subject.call('https://host.test/oembed.html')).to be_nil |           expect(subject.call('https://host.test/oembed.html')).to be_nil | ||||||
|         end |         end | ||||||
|       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 |     end | ||||||
|  |  | ||||||
|     context 'when status code is not 200' do |     context 'when status code is not 200' do | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user