Автоматизация ZAP: неопределенный метод `[]' для nil:NilClass (NoMethodError)

Автоматизация ZAP: неопределенный метод `[]' для nil:NilClass (NoMethodError)

Я получаю указанную выше ошибку при попытке получить ответ zap с помощью ruby. ниже мой код:

Then(/^I should be able to see security warnings$/) do

#Get response from via RestClient framework method.
begin
  response = JSON.parse RestClient.get "http://#{$zap_proxy}:#{$zap_proxy_port}/json/core/view/alerts"
  rescue RestClient::ServerBrokeConnection

   #Classify the alerts
   events = response['alerts']
   high_risks = events.select{|x| x['risk'] == 'High'}
   high_count = high_risks.size
   medium_count = events.select{|x| x['risk'] == 'Medium'}.size
   low_count = events.select{|x| x['risk'] == 'Low'}.size
   informational_count = events.select{|x| x['risk'] == 'Informational'}.size
end

#Check high alert count and print them
if high_count > 0
  high_risks.each { |x| p x['alert'] }
end

#Expect high alert count equal to 0
expect(high_count).to eq 0

#Print alerts with risk levels
site = Capybara.app_host
response = JSON.parse RestClient.get "http://#{$zap_proxy}:#{$zap_proxy_port}/json/core/view/alerts",
params: { zapapiformat: 'JSON', baseurl: site }
response['alerts'].each { |x| p "#{x['alert']} risk level: #{x['risk']}"}
end

кто-нибудь, пожалуйста, помогите мне. я намерен распечатать предупреждения безопасности и отобразить их в командной строке


person Vipul Gopal    schedule 27.11.2017    source источник


Ответы (1)


Я думаю, что у вас есть значение nil в events, и вы пытаетесь получить значение x['...'] из nil. потребуется немного больше деталей, включая линию.

редактировать:

попробуй events = response['alerts'].reject { |x| x.nil? }

person Safi Nettah    schedule 27.11.2017