112 lines
3.2 KiB
Ruby
112 lines
3.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
|
|
require 'rails_helper'
|
|
require 'controllers/support/shared_user_context'
|
|
|
|
describe 'Maintenance Mode' do
|
|
page = 'http://commet'
|
|
token = 'thoathioa'
|
|
include_context :shared_user_context
|
|
around(:each) do |example|
|
|
example.run
|
|
Settings.reload!
|
|
end
|
|
|
|
describe OnboardController, type: :controller do
|
|
describe '(Onboard is just a basic example controller)'
|
|
it 'not in maintenance mode' do
|
|
get :index
|
|
assert_response 200
|
|
end
|
|
|
|
describe 'in maintenance' do
|
|
before(:each) do
|
|
Settings.merge!(maintenance:
|
|
{ maintenance_mode: true,
|
|
maintenance_token: token,
|
|
maintenance_page: page })
|
|
end
|
|
|
|
it 'redirects for onboard' do
|
|
get :index
|
|
assert_redirected_to page
|
|
end
|
|
|
|
it 'allows access to non-sign_in pages if youre logged in' do
|
|
sign_in user_as_np_associate
|
|
get :index
|
|
assert_response 200
|
|
end
|
|
end
|
|
end
|
|
|
|
describe Users::SessionsController, type: :controller do
|
|
describe 'in maintenance' do
|
|
include_context :shared_user_context
|
|
around(:each) do |example|
|
|
example.run
|
|
Settings.reload!
|
|
end
|
|
|
|
before(:each) do
|
|
@request.env['devise.mapping'] = Devise.mappings[:user]
|
|
end
|
|
|
|
describe 'in maintenance' do
|
|
before(:each) do
|
|
Settings.merge!(maintenance:
|
|
{ maintenance_mode: true,
|
|
maintenance_token: token,
|
|
maintenance_page: page })
|
|
end
|
|
|
|
it 'redirects sign_in if the token is wrong' do
|
|
get(:new, params: { maintenance_token: "#{token}3" })
|
|
expect(response.code).to eq '302'
|
|
expect(response.location).to eq page
|
|
end
|
|
|
|
it 'redirects for login' do
|
|
get(:new)
|
|
expect(response.code).to eq '302'
|
|
expect(response.location).to eq page
|
|
end
|
|
|
|
it 'redirects sign_in if the token is passed in wrong param' do
|
|
get(:new, params: { maintnancerwrwer_token: token.to_s })
|
|
expect(response.code).to eq '302'
|
|
expect(response.location).to eq page
|
|
end
|
|
|
|
it 'allows sign_in if the token is passed' do
|
|
get(:new, params: { maintenance_token: token.to_s })
|
|
expect(response.code).to eq '200'
|
|
end
|
|
|
|
it 'allows sign_in.json' do
|
|
get(:new, params: { maintenance_token: token.to_s, format: 'json' })
|
|
expect(response.code).to eq '200'
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'in maintenance without maintenance_token set' do
|
|
before(:each) do
|
|
@request.env['devise.mapping'] = Devise.mappings[:user]
|
|
end
|
|
before(:each) do
|
|
Settings.merge!(maintenance:
|
|
{ maintenance_mode: true,
|
|
maintenance_token: nil,
|
|
maintenance_page: page })
|
|
end
|
|
|
|
it 'redirects sign_in if the token is nil' do
|
|
get(:new)
|
|
expect(response.code).to eq '302'
|
|
expect(response.location).to eq page
|
|
end
|
|
end
|
|
end
|
|
end
|