RSpec.describe Auth::SessionsController, type: :controller do
render_views
- describe 'GET #new' do
- before do
- request.env['devise.mapping'] = Devise.mappings[:user]
- end
+ before do
+ request.env['devise.mapping'] = Devise.mappings[:user]
+ end
+ describe 'GET #new' do
it 'returns http success' do
get :new
expect(response).to have_http_status(200)
describe 'DELETE #destroy' do
let(:user) { Fabricate(:user) }
- before do
- request.env['devise.mapping'] = Devise.mappings[:user]
- end
-
context 'with a regular user' do
it 'redirects to home after sign out' do
sign_in(user, scope: :user)
end
describe 'POST #create' do
- before do
- request.env['devise.mapping'] = Devise.mappings[:user]
- end
-
- context 'using PAM authentication' do
+ context 'using PAM authentication', if: ENV['PAM_ENABLED'] == 'true' do
context 'using a valid password' do
before do
post :create, params: { user: { email: "pam_user1", password: '123456' } }
let(:user) do
account = Fabricate.build(:account, username: 'pam_user1')
account.save!(validate: false)
- user = Fabricate(:user, email: 'pam@example.com', password: nil, account: account)
+ user = Fabricate(:user, email: 'pam@example.com', password: nil, account: account, external: true)
user
end
let(:unconfirmed_user) { user.tap { |u| u.update!(confirmed_at: nil) } }
let(:accept_language) { 'fr' }
- it 'shows a translated login error' do
- expect(flash[:alert]).to eq(I18n.t('devise.failure.unconfirmed', locale: accept_language))
+ it 'redirects to home' do
+ expect(response).to redirect_to(root_path)
end
end
end
context 'using two-factor authentication' do
- let(:user) do
- Fabricate(:user, email: 'x@y.com', password: 'abcdefgh',
- otp_required_for_login: true, otp_secret: User.generate_otp_secret(32))
+ let!(:user) do
+ Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret(32))
end
- let(:recovery_codes) do
+
+ let!(:recovery_codes) do
codes = user.generate_otp_backup_codes!
user.save
return codes