diff --git a/app/controllers/api/application_controller.rb b/app/controllers/api/application_controller.rb index aa14369..a4632d8 100644 --- a/app/controllers/api/application_controller.rb +++ b/app/controllers/api/application_controller.rb @@ -29,7 +29,11 @@ module API end def ping - render json: { pong: true } + ping_response + end + + def ping_auth + ping_response end def authenticate! @@ -43,5 +47,12 @@ module API head :not_acceptable, content_type: 'application/json' end end + + + private + + def ping_response + render json: { pong: true } + end end end diff --git a/config/routes.rb b/config/routes.rb index 864093d..c098212 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,6 +3,7 @@ Rails.application.routes.draw do namespace :api do get '/ping', to: 'application#ping' + get '/ping/auth', to: 'application#ping_auth' match '*all', to: 'application#cor_preflight', via: :options resources :playlists, only: %i[index show create update destroy] resources :sessions, only: :create diff --git a/spec/integration/api/application_spec.rb b/spec/integration/api/application_spec.rb index 5db1d4f..3c7a4b3 100644 --- a/spec/integration/api/application_spec.rb +++ b/spec/integration/api/application_spec.rb @@ -7,6 +7,22 @@ describe 'API application' do end end + describe 'authenticated ping endpoint' do + before { get api_ping_auth_path, format: :json } + + it 'requests authentication' do + expect(response).to have_http_status 401 + end + + context 'when session is authenticated' do + subject { response } + + before { api_sign_in } + + it { is_expected.to have_http_status 200 } + end + end + describe 'formats handling' do before { api_sign_in }