diff options
Diffstat (limited to 'spec/controllers/projects/environments/prometheus_api_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/environments/prometheus_api_controller_spec.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb b/spec/controllers/projects/environments/prometheus_api_controller_spec.rb index 5a0b92c2514..d232408b775 100644 --- a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb +++ b/spec/controllers/projects/environments/prometheus_api_controller_spec.rb @@ -14,6 +14,7 @@ describe Projects::Environments::PrometheusApiController do describe 'GET #proxy' do let(:prometheus_proxy_service) { instance_double(Prometheus::ProxyService) } + let(:expected_params) do ActionController::Parameters.new( environment_params( @@ -47,6 +48,38 @@ describe Projects::Environments::PrometheusApiController do expect(response).to have_gitlab_http_status(:ok) expect(json_response).to eq(prometheus_json_body) end + + context 'with format string' do + before do + expected_params[:query] = %{up{environment="#{environment.slug}"}} + end + + it 'replaces variables with values' do + get :proxy, params: environment_params.merge(query: 'up{environment="%{ci_environment_slug}"}') + + expect(Prometheus::ProxyService).to have_received(:new) + .with(environment, 'GET', 'query', expected_params) + end + + context 'with nil query' do + let(:params_without_query) do + params = environment_params + params.delete(:query) + params + end + + before do + expected_params.delete(:query) + end + + it 'does not raise error' do + get :proxy, params: params_without_query + + expect(Prometheus::ProxyService).to have_received(:new) + .with(environment, 'GET', 'query', expected_params) + end + end + end end context 'with nil result' do |