Included Modules

Heroku::Kensa::SsoCheck

Public Instance Methods

agent() click to toggle source
# File lib/heroku/kensa/check.rb, line 427
def agent
  @agent ||= Mechanize.new
end
call!() click to toggle source
# File lib/heroku/kensa/check.rb, line 449
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
# File lib/heroku/kensa/check.rb, line 444
def check(msg)
  @sso = Sso.new(data)
  super
end
mechanize_get() click to toggle source
# File lib/heroku/kensa/check.rb, line 431
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

[Validate]

Generated with the Darkfish Rdoc Generator 2.