Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReuben Pereira <rpereira@gitlab.com>2019-04-15 18:31:59 +0300
committerSean McGivern <sean@gitlab.com>2019-04-15 18:31:59 +0300
commit434359446a5436d6c11b66c7107ecaea133cd6e1 (patch)
tree126ef533dcd8488d14c408e46e67596c29573b43 /spec/controllers
parente7c9bcec5c44e3afd7e89dc5380d9d7aa5235150 (diff)
Add ability to do variable substitution
- In prometheus proxy api, allow variables to be replaced. For example, if 'up{env="%{ci_environment_slug}"}' is passed to the endpoint, it becomes 'up{env="production"}' before being sent to prometheus.
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/projects/environments/prometheus_api_controller_spec.rb33
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