Commit 58313de4 authored by Tiago Botelho's avatar Tiago Botelho Committed by Rémy Coutable

Render 404 when prometheus adapter is disabled in Prometheus metrics controller

parent a2dbca4a
...@@ -25,7 +25,7 @@ module Projects ...@@ -25,7 +25,7 @@ module Projects
end end
def require_prometheus_metrics! def require_prometheus_metrics!
render_404 unless prometheus_adapter.can_query? render_404 unless prometheus_adapter&.can_query?
end end
end end
end end
......
---
title: Render 404 when prometheus adapter is disabled in Prometheus metrics controller
merge_request: 19110
author:
type: fixed
...@@ -12,44 +12,67 @@ describe Projects::Prometheus::MetricsController do ...@@ -12,44 +12,67 @@ describe Projects::Prometheus::MetricsController do
end end
describe 'GET #active_common' do describe 'GET #active_common' do
before do context 'when prometheus_adapter can query' do
allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter) before do
end allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter)
end
context 'when prometheus metrics are enabled' do context 'when prometheus metrics are enabled' do
context 'when data is not present' do context 'when data is not present' do
before do before do
allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return({}) allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return({})
end end
it 'returns no content response' do it 'returns no content response' do
get :active_common, project_params(format: :json) get :active_common, project_params(format: :json)
expect(response).to have_gitlab_http_status(204) expect(response).to have_gitlab_http_status(204)
end
end end
end
context 'when data is available' do context 'when data is available' do
let(:sample_response) { { some_data: 1 } } let(:sample_response) { { some_data: 1 } }
before do
allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return(sample_response)
end
before do it 'returns no content response' do
allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return(sample_response) get :active_common, project_params(format: :json)
expect(response).to have_gitlab_http_status(200)
expect(json_response).to eq(sample_response.deep_stringify_keys)
end
end end
it 'returns no content response' do context 'when requesting non json response' do
get :active_common, project_params(format: :json) it 'returns not found response' do
get :active_common, project_params
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(404)
expect(json_response).to eq(sample_response.deep_stringify_keys) end
end end
end end
end
context 'when requesting non json response' do context 'when prometheus_adapter cannot query' do
it 'returns not found response' do it 'renders 404' do
get :active_common, project_params prometheus_adapter = double('prometheus_adapter', can_query?: false)
expect(response).to have_gitlab_http_status(404) allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter)
end allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return({})
get :active_common, project_params(format: :json)
expect(response).to have_gitlab_http_status(404)
end
end
context 'when prometheus_adapter is disabled' do
it 'renders 404' do
get :active_common, project_params(format: :json)
expect(response).to have_gitlab_http_status(404)
end end
end end
end end
......
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