Commit f38779c6 authored by Pawel Chojnacki's avatar Pawel Chojnacki

Respond with 404 when metrics are not enabled or deployment_metrics is not implemented

parent 2a89d2c9
...@@ -11,13 +11,15 @@ class Projects::DeploymentsController < Projects::ApplicationController ...@@ -11,13 +11,15 @@ class Projects::DeploymentsController < Projects::ApplicationController
end end
def metrics def metrics
return render_404 unless deployment.has_metrics?
@metrics = deployment.metrics @metrics = deployment.metrics
if @metrics&.any? if @metrics&.any?
render json: @metrics, status: :ok render json: @metrics, status: :ok
else else
head :no_content head :no_content
end end
rescue NotImplementedError
render_404
end end
private private
......
...@@ -42,6 +42,22 @@ describe Projects::DeploymentsController do ...@@ -42,6 +42,22 @@ describe Projects::DeploymentsController do
before do before do
allow(controller).to receive(:deployment).and_return(deployment) allow(controller).to receive(:deployment).and_return(deployment)
end end
context 'when metrics are disabled' do
before do
allow(deployment).to receive(:has_metrics?).and_return false
end
it 'responds with not found' do
get :metrics, deployment_params(id: deployment.id)
expect(response).to be_not_found
end
end
context 'when metrics are enabled' do
before do
allow(deployment).to receive(:has_metrics?).and_return true
end
context 'when environment has no metrics' do context 'when environment has no metrics' do
before do before do
...@@ -77,6 +93,19 @@ describe Projects::DeploymentsController do ...@@ -77,6 +93,19 @@ describe Projects::DeploymentsController do
expect(json_response['last_update']).to eq(42) expect(json_response['last_update']).to eq(42)
end end
end end
context 'when metrics service does not implement deployment metrics' do
before do
allow(deployment).to receive(:metrics).and_raise(NotImplementedError)
end
it 'responds with not found' do
get :metrics, deployment_params(id: deployment.id)
expect(response).to be_not_found
end
end
end
end end
def deployment_params(opts = {}) def deployment_params(opts = {})
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment