class Heroku::Kensa::SsoCheck
Public Instance Methods
agent()
click to toggle source
# File lib/heroku/kensa/check.rb, line 499 def agent @agent ||= Mechanize.new end
call!()
click to toggle source
# File lib/heroku/kensa/check.rb, line 521 def call! error("need an sso salt to perform sso test") unless data['api']['sso_salt'] sso = Sso.new(data) verb = sso.POST? ? 'POST' : 'GET' test "#{verb} #{sso.path}" check "validates token" do @sso.token = 'invalid' page, respcode = mechanize_get error("expected 403, got #{respcode}") unless respcode == 403 true end check "validates timestamp" do @sso.timestamp = (Time.now - 60*6).to_i page, respcode = mechanize_get error("expected 403, got #{respcode}") unless respcode == 403 true end page_logged_in = nil check "logs in" do page_logged_in, respcode = mechanize_get error("expected 200, got #{respcode}") unless respcode == 200 true end check "creates the heroku-nav-data cookie" do cookie = agent.cookie_jar.cookies(URI.parse(@sso.full_url)).detect { |c| c.name == 'heroku-nav-data' } error("could not find cookie heroku-nav-data") unless cookie error("expected #{@sso.sample_nav_data}, got #{cookie.value}") unless cookie.value == @sso.sample_nav_data true end check "displays the heroku layout" do if page_logged_in.search('div#heroku-header').empty? && page_logged_in.search('script[src*=boomerang]').empty? error("could not find Heroku layout") end true end end
check(msg)
click to toggle source
Calls superclass method
Heroku::Kensa::Check#check
# File lib/heroku/kensa/check.rb, line 516 def check(msg) @sso = Sso.new(data) super end
mechanize_get()
click to toggle source
# File lib/heroku/kensa/check.rb, line 503 def mechanize_get if @sso.POST? page = agent.post(@sso.post_url, @sso.query_params) else page = agent.get(@sso.get_url) end return page, 200 rescue Mechanize::ResponseCodeError => error return nil, error.response_code.to_i rescue Errno::ECONNREFUSED error("connection refused to #{url}") end