@ -107,6 +107,89 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
end
end
end
end
context 'approval-based registrations without invite' do
around do | example |
registrations_mode = Setting . registrations_mode
example . run
Setting . registrations_mode = registrations_mode
end
subject do
Setting . registrations_mode = 'approved'
request . headers [ " Accept-Language " ] = accept_language
post :create , params : { user : { account_attributes : { username : 'test' } , email : 'test@example.com' , password : '12345678' , password_confirmation : '12345678' } }
end
it 'redirects to login page' do
subject
expect ( response ) . to redirect_to new_user_session_path
end
it 'creates user' do
subject
user = User . find_by ( email : 'test@example.com' )
expect ( user ) . to_not be_nil
expect ( user . locale ) . to eq ( accept_language )
expect ( user . approved ) . to eq ( false )
end
end
context 'approval-based registrations with expired invite' do
around do | example |
registrations_mode = Setting . registrations_mode
example . run
Setting . registrations_mode = registrations_mode
end
subject do
Setting . registrations_mode = 'approved'
request . headers [ " Accept-Language " ] = accept_language
invite = Fabricate ( :invite , max_uses : nil , expires_at : 1 . hour . ago )
post :create , params : { user : { account_attributes : { username : 'test' } , email : 'test@example.com' , password : '12345678' , password_confirmation : '12345678' , 'invite_code' : invite . code } }
end
it 'redirects to login page' do
subject
expect ( response ) . to redirect_to new_user_session_path
end
it 'creates user' do
subject
user = User . find_by ( email : 'test@example.com' )
expect ( user ) . to_not be_nil
expect ( user . locale ) . to eq ( accept_language )
expect ( user . approved ) . to eq ( false )
end
end
context 'approval-based registrations with valid invite' do
around do | example |
registrations_mode = Setting . registrations_mode
example . run
Setting . registrations_mode = registrations_mode
end
subject do
Setting . registrations_mode = 'approved'
request . headers [ " Accept-Language " ] = accept_language
invite = Fabricate ( :invite , max_uses : nil , expires_at : 1 . hour . from_now )
post :create , params : { user : { account_attributes : { username : 'test' } , email : 'test@example.com' , password : '12345678' , password_confirmation : '12345678' , 'invite_code' : invite . code } }
end
it 'redirects to login page' do
subject
expect ( response ) . to redirect_to new_user_session_path
end
it 'creates user' do
subject
user = User . find_by ( email : 'test@example.com' )
expect ( user ) . to_not be_nil
expect ( user . locale ) . to eq ( accept_language )
expect ( user . approved ) . to eq ( true )
end
end
it 'does nothing if user already exists' do
it 'does nothing if user already exists' do
Fabricate ( :user , account : Fabricate ( :account , username : 'test' ) )
Fabricate ( :user , account : Fabricate ( :account , username : 'test' ) )
subject
subject