2019-02-15 15:39:39 +05:30
# frozen_string_literal: true
require 'spec_helper'
2020-07-28 23:09:34 +05:30
RSpec . describe 'projects/settings/operations/show' do
let_it_be ( :project ) { create ( :project ) }
let_it_be ( :user ) { create ( :user ) }
2021-01-03 14:25:43 +05:30
let_it_be ( :error_tracking_setting ) do
create ( :project_error_tracking_setting , project : project )
end
let_it_be_with_reload ( :tracing_setting ) do
create ( :project_tracing_setting , project : project )
end
let_it_be ( :prometheus_service ) { create ( :prometheus_service , project : project ) }
2019-02-15 15:39:39 +05:30
2021-01-03 14:25:43 +05:30
before_all do
2021-01-29 00:20:46 +05:30
project . add_maintainer ( user )
2021-01-03 14:25:43 +05:30
end
2019-02-15 15:39:39 +05:30
before do
assign :project , project
2021-01-03 14:25:43 +05:30
allow ( view ) . to receive ( :error_tracking_setting )
. and_return ( error_tracking_setting )
allow ( view ) . to receive ( :tracing_setting )
. and_return ( tracing_setting )
2021-03-08 18:12:59 +05:30
allow ( view ) . to receive ( :prometheus_service )
. and_return ( prometheus_service )
2021-01-03 14:25:43 +05:30
allow ( view ) . to receive ( :current_user ) . and_return ( user )
2019-02-15 15:39:39 +05:30
end
2021-03-08 18:12:59 +05:30
describe 'Operations > Alerts' do
it 'renders the Operations Settings page' do
render
expect ( rendered ) . to have_content _ ( 'Alerts' )
expect ( rendered ) . to have_content _ ( 'Display alerts from all your monitoring tools directly within GitLab.' )
end
end
2019-02-15 15:39:39 +05:30
describe 'Operations > Error Tracking' do
2021-01-03 14:25:43 +05:30
context 'Settings page ' do
it 'renders the Operations Settings page' do
2021-03-08 18:12:59 +05:30
render
2019-02-15 15:39:39 +05:30
2021-01-03 14:25:43 +05:30
expect ( rendered ) . to have_content _ ( 'Error tracking' )
expect ( rendered ) . to have_content _ ( 'To link Sentry to GitLab, enter your Sentry URL and Auth Token' )
end
2019-02-15 15:39:39 +05:30
end
2021-01-03 14:25:43 +05:30
end
2019-02-15 15:39:39 +05:30
2021-03-08 18:12:59 +05:30
describe 'Operations > Prometheus' do
context 'when settings_operations_prometheus_service flag is enabled' do
it 'renders the Operations Settings page' do
render
expect ( rendered ) . to have_content _ ( 'Prometheus' )
expect ( rendered ) . to have_content _ ( 'Link Prometheus monitoring to GitLab.' )
expect ( rendered ) . to have_content _ ( 'To enable the installation of Prometheus on your clusters, deactivate the manual configuration below' )
end
end
context 'when settings_operations_prometheus_service is disabled' do
before do
stub_feature_flags ( settings_operations_prometheus_service : false )
end
it 'renders the Operations Settings page' do
render
expect ( rendered ) . not_to have_content _ ( 'Select the Active checkbox to override the Auto Configuration with custom settings. If unchecked, Auto Configuration settings are used.' )
end
end
end
2021-01-03 14:25:43 +05:30
describe 'Operations > Tracing' do
context 'with project.tracing_external_url' do
it 'links to project.tracing_external_url' do
2021-03-08 18:12:59 +05:30
render
2021-01-03 14:25:43 +05:30
expect ( rendered ) . to have_link ( 'Tracing' , href : tracing_setting . external_url )
end
context 'with malicious external_url' do
let ( :malicious_tracing_url ) { " https://replaceme.com/'><script>alert(document.cookie)</script> " }
let ( :cleaned_url ) { " https://replaceme.com/'> " }
before do
tracing_setting . update_column ( :external_url , malicious_tracing_url )
end
it 'sanitizes external_url' do
2021-03-08 18:12:59 +05:30
render
2021-01-03 14:25:43 +05:30
expect ( tracing_setting . external_url ) . to eq ( malicious_tracing_url )
expect ( rendered ) . to have_link ( 'Tracing' , href : cleaned_url )
end
end
2019-02-15 15:39:39 +05:30
end
2021-01-03 14:25:43 +05:30
context 'without project.tracing_external_url' do
let ( :tracing_setting ) { build ( :project_tracing_setting , project : project ) }
before do
tracing_setting . external_url = nil
end
it 'links to Tracing page' do
2021-03-08 18:12:59 +05:30
render
2019-02-15 15:39:39 +05:30
2021-01-03 14:25:43 +05:30
expect ( rendered ) . to have_link ( 'Tracing' , href : project_tracing_path ( project ) )
2019-02-15 15:39:39 +05:30
end
end
end
end