require 'rails_helper' RSpec.describe 'Super Admin Application Config API', type: :request do let(:super_admin) { create(:super_admin) } describe 'GET /super_admin/app_config' do context 'when it is an unauthenticated super admin' do it 'returns unauthorized' do get '/super_admin/app_config' expect(response).to have_http_status(:redirect) end end context 'when it is an authenticated super admin' do let!(:config) { create(:installation_config, { name: 'FB_APP_ID', value: 'TESTVALUE' }) } it 'shows the app_config page' do sign_in(super_admin, scope: :super_admin) get '/super_admin/app_config' expect(response).to have_http_status(:success) expect(response.body).to include(config.name) end end end describe 'POST /super_admin/app_config' do context 'when it is an unauthenticated super admin' do it 'returns unauthorized' do post '/super_admin/app_config', params: { app_config: { TESTKEY: 'TESTVALUE' } } expect(response).to have_http_status(:redirect) end end context 'when it is an aunthenticated super admin' do it 'shows the app_config page' do sign_in(super_admin, scope: :super_admin) post '/super_admin/app_config', params: { app_config: { TESTKEY: 'TESTVALUE' } } expect(response.status).to eq(302) expect(response).to redirect_to(super_admin_app_config_path) config = GlobalConfig.get('TESTKEY') expect(config['TESTKEY']).to eq('TESTVALUE') end end end end