From 15b7b9ec4117bf19168ea0f923ea11e926edcc5c Mon Sep 17 00:00:00 2001 From: Pawel Chojnacki Date: Tue, 20 Jun 2017 15:53:05 +0200 Subject: Add rescue_from(ActionController::UnknownFormat) in Application Controller --- app/controllers/application_controller.rb | 4 +++ app/controllers/projects/deployments_controller.rb | 16 +++++++----- .../projects/environments_controller.rb | 8 ++++-- app/controllers/projects/prometheus_controller.rb | 4 --- spec/controllers/application_controller_spec.rb | 30 ++++++++++++++++++++++ 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 91694ebcd1d..824ce845706 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -40,6 +40,10 @@ class ApplicationController < ActionController::Base render_404 end + rescue_from(ActionController::UnknownFormat) do + render_404 + end + rescue_from Gitlab::Access::AccessDeniedError do |exception| render_403 end diff --git a/app/controllers/projects/deployments_controller.rb b/app/controllers/projects/deployments_controller.rb index acf5573935a..47c312ffddf 100644 --- a/app/controllers/projects/deployments_controller.rb +++ b/app/controllers/projects/deployments_controller.rb @@ -25,12 +25,16 @@ class Projects::DeploymentsController < Projects::ApplicationController def additional_metrics return render_404 unless deployment.has_additional_metrics? - metrics = deployment.additional_metrics - - if metrics.any? - render json: metrics - else - head :no_content + respond_to do |format| + format.json do + metrics = deployment.additional_metrics + + if metrics.any? + render json: metrics + else + head :no_content + end + end end end diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb index 557049c0b22..3869d4b2d56 100644 --- a/app/controllers/projects/environments_controller.rb +++ b/app/controllers/projects/environments_controller.rb @@ -132,9 +132,13 @@ class Projects::EnvironmentsController < Projects::ApplicationController end def additional_metrics - additional_metrics = environment.additional_metrics || {} + respond_to do |format| + format.json do + additional_metrics = environment.additional_metrics || {} - render json: additional_metrics, status: additional_metrics.any? ? :ok : :no_content + render json: additional_metrics, status: additional_metrics.any? ? :ok : :no_content + end + end end private diff --git a/app/controllers/projects/prometheus_controller.rb b/app/controllers/projects/prometheus_controller.rb index 7b828981dd8..507468d7102 100644 --- a/app/controllers/projects/prometheus_controller.rb +++ b/app/controllers/projects/prometheus_controller.rb @@ -18,10 +18,6 @@ class Projects::PrometheusController < Projects::ApplicationController private - rescue_from(ActionController::UnknownFormat) do - render_404 - end - def require_prometheus_metrics! render_404 unless project.prometheus_service.present? end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 3f99e2ff596..a2720c9b81e 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -99,6 +99,36 @@ describe ApplicationController do end end + describe 'response format' do + controller(described_class) do + def index + respond_to do |format| + format.json do + head :ok + end + end + end + end + + context 'when format is handled' do + let(:requested_format) { :json } + + it 'returns 200 response' do + get :index, private_token: user.private_token, format: requested_format + + expect(response).to have_http_status 200 + end + end + + context 'when format is not handled' do + it 'returns 404 response' do + get :index, private_token: user.private_token + + expect(response).to have_http_status 404 + end + end + end + describe '#authenticate_user_from_rss_token' do describe "authenticating a user from an RSS token" do controller(described_class) do -- cgit v1.2.1