|
|
@@ -107,6 +107,89 @@ RSpec.describe Auth::RegistrationsController, type: :controller do |
|
|
|
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 |
|
|
|
Fabricate(:user, account: Fabricate(:account, username: 'test')) |
|
|
|
subject |
|
|
|