Skip to content
Snippets Groups Projects
Commit 58313de4 authored by Tiago Botelho's avatar Tiago Botelho Committed by Rémy Coutable
Browse files

Render 404 when prometheus adapter is disabled in Prometheus metrics controller

parent a2dbca4a
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -25,7 +25,7 @@ module Projects
end
 
def require_prometheus_metrics!
render_404 unless prometheus_adapter.can_query?
render_404 unless prometheus_adapter&.can_query?
end
end
end
Loading
Loading
---
title: Render 404 when prometheus adapter is disabled in Prometheus metrics controller
merge_request: 19110
author:
type: fixed
Loading
Loading
@@ -12,44 +12,67 @@ describe Projects::Prometheus::MetricsController do
end
 
describe 'GET #active_common' do
before do
allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter)
end
context 'when prometheus_adapter can query' do
before do
allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter)
end
 
context 'when prometheus metrics are enabled' do
context 'when data is not present' do
before do
allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return({})
end
context 'when prometheus metrics are enabled' do
context 'when data is not present' do
before do
allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return({})
end
 
it 'returns no content response' do
get :active_common, project_params(format: :json)
it 'returns no content response' do
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
 
context 'when data is available' do
let(:sample_response) { { some_data: 1 } }
context 'when data is available' do
let(:sample_response) { { some_data: 1 } }
before do
allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return(sample_response)
end
 
before do
allow(prometheus_adapter).to receive(:query).with(:matched_metrics).and_return(sample_response)
it 'returns no content response' do
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
 
it 'returns no content response' do
get :active_common, project_params(format: :json)
context 'when requesting non json response' do
it 'returns not found response' do
get :active_common, project_params
 
expect(response).to have_gitlab_http_status(200)
expect(json_response).to eq(sample_response.deep_stringify_keys)
expect(response).to have_gitlab_http_status(404)
end
end
end
end
 
context 'when requesting non json response' do
it 'returns not found response' do
get :active_common, project_params
context 'when prometheus_adapter cannot query' do
it 'renders 404' do
prometheus_adapter = double('prometheus_adapter', can_query?: false)
 
expect(response).to have_gitlab_http_status(404)
end
allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter)
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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment