# frozen_string_literal: true

require 'spec_helper'

describe Gitlab::DeviseFailure do
  let(:env) do
    {
      'REQUEST_URI' => 'http://test.host/',
      'HTTP_HOST' => 'test.host',
      'REQUEST_METHOD' => 'GET',
      'warden.options' => { scope: :user },
      'rack.session' => {},
      'rack.session.options' => {},
      'rack.input' => "",
      'warden' => OpenStruct.new(message: nil)
    }
  end

  let(:response) { described_class.call(env).to_a }
  let(:request) { ActionDispatch::Request.new(env) }

  context 'When redirecting' do
    it 'sets the expire_after key' do
      response

      expect(env['rack.session.options']).to have_key(:expire_after)
    end

    it 'returns to the default redirect location' do
      expect(response.first).to eq(302)
      expect(request.flash[:alert]).to eq('You need to sign in or sign up before continuing.')
      expect(response.second['Location']).to eq('http://test.host/users/sign_in')
    end
  end
end
