Sha256: d2acdbb72a6195fca9bd39ad762a6477c87db0dd53ce86bab3b4ac2d0393f1a3

Contents?: true

Size: 1.92 KB

Versions: 6

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'

RSpec.describe "Using SwitchUser", :type => :request do
  let(:user) { User.create!(:email => "foo@bar.com", :admin => true) }
  let(:other_user) { User.create!(:email => "other@bar.com", :admin => false) }

  before do
    SwitchUser.reset_config
    SwitchUser.provider = :session
    SwitchUser.controller_guard = lambda { |current_user, request| Rails.env.test? }
    SwitchUser.redirect_path = lambda {|_,_| "/dummys/open"}
  end

  it "signs a user in using switch_user" do
    # can't access protected url
    get "/dummy/protected"
    expect(response).to be_redirect

    get "/switch_user?scope_identifier=user_#{other_user.id}"
    expect(response).to be_redirect

    # now that we are logged in via switch_user we can access
    get "/dummy/protected"
    expect(response).to be_success
  end

  context "using switch_back" do
    before do
      SwitchUser.switch_back = true
      SwitchUser.controller_guard = lambda { |current_user, request, original_user|
        current_user && current_user.admin? || original_user && original_user.admin?
      }
    end

    it "can switch back to a different user" do
      # login
      post "/login", :id => user.id
      follow_redirect!

      # have SwitchUser remember us
      get "/switch_user/remember_user", :remember => true
      expect(session["original_user_scope_identifier"]).to be_present

      # check that we can switch to another user
      get "/switch_user?scope_identifier=user_#{other_user.id}"
      expect(session["user_id"]).to eq other_user.id

      # logout
      get "/logout"
      expect(session["user_id"]).to be_nil

      # check that we can still switch to another user
      get "/switch_user?scope_identifier=user_#{user.id}"
      expect(session["user_id"]).to eq user.id

      # check that we can be un-remembered
      get "/switch_user/remember_user", :remember => false
      expect(session["original_user"]).to be_nil
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
switch_user-1.2.1 spec/integration/switch_user_spec.rb
switch_user-1.2.0 spec/integration/switch_user_spec.rb
switch_user-1.1.0 spec/integration/switch_user_spec.rb
switch_user-1.0.2 spec/integration/switch_user_spec.rb
switch_user-1.0.1 spec/integration/switch_user_spec.rb
switch_user-1.0.0 spec/integration/switch_user_spec.rb