Sha256: 195707836a92c05213297c4c2d3d1c1f5406ada8c186d08e80152fd2b0b5d0b8

Contents?: true

Size: 963 Bytes

Versions: 13

Compression:

Stored size: 963 Bytes

Contents

require 'spec_helper'

describe Clearance::BackDoor do
  it 'signs in as a given user' do
    user_id = '123'
    user = stub('user')
    User.stubs(:find).with(user_id).returns(user)
    env = env_for_user_id(user_id)
    back_door = Clearance::BackDoor.new(mock_app)

    result = back_door.call(env)

    env[:clearance].should have_received(:sign_in).with(user)
    result.should eq mock_app.call(env)
  end

  it 'delegates directly without a user' do
    env = env_without_user_id
    back_door = Clearance::BackDoor.new(mock_app)

    result = back_door.call(env)

    env[:clearance].should have_received(:sign_in).never
    result.should eq mock_app.call(env)
  end

  def env_without_user_id
    env_for_user_id('')
  end

  def env_for_user_id(user_id)
    clearance = stub('clearance', sign_in: true)
    Rack::MockRequest.env_for("/?as=#{user_id}").merge(clearance: clearance)
  end

  def mock_app
    lambda { |env| [200, {}, ['okay']] }
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
clearance-1.4.3 spec/clearance/back_door_spec.rb
clearance-1.4.2 spec/clearance/back_door_spec.rb
clearance-1.4.1 spec/clearance/back_door_spec.rb
clearance-1.4.0 spec/clearance/back_door_spec.rb
clearance-1.3.0 spec/clearance/back_door_spec.rb
clearance-1.2.1 spec/clearance/back_door_spec.rb
clearance-1.2.0 spec/clearance/back_door_spec.rb
clearance-1.1.0 spec/clearance/back_door_spec.rb
clearance-1.0.1 spec/clearance/back_door_spec.rb
clearance-1.0.0 spec/clearance/back_door_spec.rb
clearance-1.0.0.rc8 spec/clearance/back_door_spec.rb
clearance-1.0.0.rc7 spec/clearance/back_door_spec.rb
clearance-1.0.0.rc6 spec/clearance/back_door_spec.rb