Skip to content

Instantly share code, notes, and snippets.

@niborg
Created April 29, 2020 22:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save niborg/323cb576bbead5a080046b4b6ac0256d to your computer and use it in GitHub Desktop.
Save niborg/323cb576bbead5a080046b4b6ac0256d to your computer and use it in GitHub Desktop.
Request spec login macros
def create_session(user)
payload = { username_or_email: user.email }
if user.two_factor?
payload.merge!(auth_code: user.otp_code)
else
payload.merge!(password: user.password)
end
post '/sessions', payload
error = session[:flash] && session[:flash][:error]
raise "Attempt to login with #{user} return message: #{error}" if error
end
def destroy_session(user)
get '/logout'
raise "Attempt to logout with #{user} resulted in #{response.status}" unless response.redirect?
end
@niborg
Copy link
Author

niborg commented Apr 29, 2020

describe 'GET /admin/call', type: :request do
  subject do
    get '/admin/call'
  end

  context 'when not logged in' do
    it { is_expected.to redirect_to('/sessions/new') }
  end

  context 'when logged in' do
    # before { create_session(user) }
    # after { destroy_session(user) }

    context 'as a normal user' do
      let(:user) { create(:customer_user) }

      it { is_expected.to redirect_to('/sessions/new') }
    end

    context 'as an agent' do
      let(:user) { create(:agent_user) }

      it { is_expected.to redirect_to('/sessions/new') }
    end

    context 'as an admin' do
      let(:user) { create(:admin_user) }

      it do
        # sess = session_for(user)
        # sess.get('/admin/call')
        payload = { username_or_email: user.email }
        if user.two_factor?
          payload.merge!(auth_code: user.otp_code)
        else
          payload.merge!(password: user.password)
        end
        post '/sessions', payload
        puts session
        subject
        puts session
        
        is_expected.to eq 200
      end
    end
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment