Sha256: 93419cbaac00de5afcf6a09ea258caf541e79cee0fc4ebc37a89074a3cb7d14d

Contents?: true

Size: 1.75 KB

Versions: 2

Compression:

Stored size: 1.75 KB

Contents

require 'spec_helper'

describe 'Heroku SSO API', :type => :request do
  let(:timestamp) { Time.now.to_i }
  let(:nav_data)  { 'heroku-nav-data-goes-here' }
  let(:token)     {
    pre_token = "789:#{MaitreD::Heroku.sso_salt}:#{timestamp.to_s}"
    Digest::SHA1.hexdigest(pre_token).to_s
  }

  it "renders a 403 if the token is incorrect" do
    post '/heroku/resources/sso', :params => {
      :resource_id => '789', :resource_token => 'foo', :timestamp => timestamp,
      'nav-data' => nav_data
    }

    expect(response.status).to eq(403)
  end

  it "renders a 403 if the timestamp is older than 5 minutes" do
    timestamp = 5.minutes.ago.to_i - 1
    pre_token = "789:#{MaitreD::Heroku.sso_salt}:#{timestamp.to_s}"
    token     = Digest::SHA1.hexdigest(pre_token).to_s

    post '/heroku/resources/sso', :params => {
      :resource_id => '789', :resource_token => token, :timestamp => timestamp,
      'nav-data' => nav_data
    }

    expect(response.status).to eq(403)
  end

  it "sets the heroku nav data cookie" do
    post '/heroku/resources/sso', :params => {
      :resource_id => '789', :resource_token => token, :timestamp => timestamp,
      'nav-data' => nav_data
    }

    expect(cookies['heroku-nav-data']).to eq(nav_data)
  end

  it "redirects to the appropriate URL" do
    post '/heroku/resources/sso', :params => {
      :resource_id => '789', :resource_token => token, :timestamp => timestamp,
      'nav-data' => nav_data
    }

    expect(response).to redirect_to('/my/dashboard')
  end

  it "should set the provided session variables" do
    post '/heroku/resources/sso', :params => {
      :resource_id => '789', :resource_token => token, :timestamp => timestamp,
      'nav-data' => nav_data
    }

    expect(session[:app_id]).to eq('789')
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
maitre_d-0.7.1 spec/api/heroku/single_sign_on_spec.rb
maitre_d-0.7.0 spec/api/heroku/single_sign_on_spec.rb