Commit f1dfc7eb authored by Vitali Tatarintev's avatar Vitali Tatarintev

Merge branch 'rp/keep-params-when-redirecting-dashboard' into 'master'

Keep existing parameters when redirecting metrics dashboard

See merge request gitlab-org/gitlab!40848
parents ca143cd3 7c845791
...@@ -18,7 +18,13 @@ module Projects ...@@ -18,7 +18,13 @@ module Projects
if environment if environment
render 'projects/environments/metrics' render 'projects/environments/metrics'
elsif default_environment elsif default_environment
redirect_to project_metrics_dashboard_path(project, environment: default_environment) redirect_to project_metrics_dashboard_path(
project,
**permitted_params
.to_h
.symbolize_keys
.merge(environment: default_environment)
)
else else
render 'projects/environments/empty_metrics' render 'projects/environments/empty_metrics'
end end
...@@ -26,9 +32,14 @@ module Projects ...@@ -26,9 +32,14 @@ module Projects
private private
def permitted_params
@permitted_params ||= params.permit(:dashboard_path, :environment, :page)
end
def environment def environment
strong_memoize(:environment) do strong_memoize(:environment) do
project.environments.find(params[:environment]) if params[:environment] env = permitted_params[:environment]
project.environments.find(env) if env
end end
end end
......
...@@ -14,7 +14,7 @@ RSpec.describe 'Projects::MetricsDashboardController' do ...@@ -14,7 +14,7 @@ RSpec.describe 'Projects::MetricsDashboardController' do
end end
describe 'GET /:namespace/:project/-/metrics' do describe 'GET /:namespace/:project/-/metrics' do
it 'returns 200' do it "redirects to default environment's metrics dashboard" do
send_request send_request
expect(response).to redirect_to(dashboard_route(environment: environment)) expect(response).to redirect_to(dashboard_route(environment: environment))
end end
...@@ -24,6 +24,18 @@ RSpec.describe 'Projects::MetricsDashboardController' do ...@@ -24,6 +24,18 @@ RSpec.describe 'Projects::MetricsDashboardController' do
expect(assigns(:default_environment).id).to eq(environment.id) expect(assigns(:default_environment).id).to eq(environment.id)
end end
it 'retains existing parameters when redirecting' do
get "#{dashboard_route(dashboard_path: '.gitlab/dashboards/dashboard_path.yml')}/panel/new"
expect(response).to redirect_to(
dashboard_route(
dashboard_path: '.gitlab/dashboards/dashboard_path.yml',
page: 'panel/new',
environment: environment
)
)
end
context 'with anonymous user and public dashboard visibility' do context 'with anonymous user and public dashboard visibility' do
let(:anonymous_user) { create(:user) } let(:anonymous_user) { create(:user) }
let(:project) do let(:project) do
......
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