Sha256: 5de70caa1cdf7fd0ce387b7064700ddf4b96f7cc0fcf499ed85cb846e0af1bc7

Contents?: true

Size: 996 Bytes

Versions: 11

Compression:

Stored size: 996 Bytes

Contents

require 'spec_helper'

describe Clearance::BackDoor do
  it 'signs in as a given user' do
    user_id = '123'
    user = double("user")
    allow(User).to receive(:find).with(user_id).and_return(user)
    env = env_for_user_id(user_id)
    back_door = Clearance::BackDoor.new(mock_app)

    result = back_door.call(env)

    expect(env[:clearance]).to have_received(:sign_in).with(user)
    expect(result).to 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)

    expect(env[:clearance]).not_to have_received(:sign_in)
    expect(result).to eq mock_app.call(env)
  end

  def env_without_user_id
    env_for_user_id('')
  end

  def env_for_user_id(user_id)
    clearance = double("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

11 entries across 11 versions & 1 rubygems

Version Path
clearance-1.13.0 spec/clearance/back_door_spec.rb
clearance-1.12.1 spec/clearance/back_door_spec.rb
clearance-1.12.0 spec/clearance/back_door_spec.rb
clearance-1.11.0 spec/clearance/back_door_spec.rb
clearance-1.10.1 spec/clearance/back_door_spec.rb
clearance-1.9.0 spec/clearance/back_door_spec.rb
clearance-1.8.1 spec/clearance/back_door_spec.rb
clearance-1.8.0 spec/clearance/back_door_spec.rb
clearance-1.7.0 spec/clearance/back_door_spec.rb
clearance-1.6.1 spec/clearance/back_door_spec.rb
clearance-1.6.0 spec/clearance/back_door_spec.rb