From 60e07b9bb31a11475981576f254c7905273f093e Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Mon, 10 Jul 2017 21:05:35 +0000 Subject: [PATCH] Don't error when posting empty plugin settings (#26393). git-svn-id: http://svn.redmine.org/redmine/trunk@16812 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/settings_controller.rb | 3 ++- test/functional/settings_controller_test.rb | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb index 51ab871ca..7b2dceb31 100644 --- a/app/controllers/settings_controller.rb +++ b/app/controllers/settings_controller.rb @@ -67,7 +67,8 @@ class SettingsController < ApplicationController end if request.post? - Setting.send "plugin_#{@plugin.id}=", params[:settings].permit!.to_h + setting = params[:settings] ? params[:settings].permit!.to_h : {} + Setting.send "plugin_#{@plugin.id}=", setting flash[:notice] = l(:notice_successful_update) redirect_to plugin_settings_path(@plugin) else diff --git a/test/functional/settings_controller_test.rb b/test/functional/settings_controller_test.rb index c506978c0..4c1019191 100644 --- a/test/functional/settings_controller_test.rb +++ b/test/functional/settings_controller_test.rb @@ -242,6 +242,20 @@ class SettingsControllerTest < Redmine::ControllerTest assert_equal({'sample_setting' => 'Value'}, Setting.plugin_foo) end + def test_post_empty_plugin_settings + Redmine::Plugin.register(:foo) do + settings :partial => 'not blank', # so that configurable? is true + :default => {'sample_setting' => 'Plugin setting value'} + end + + post :plugin, :params => { + :id => 'foo' + } + assert_redirected_to '/settings/plugin/foo' + + assert_equal({}, Setting.plugin_foo) + end + def test_post_non_configurable_plugin_settings Redmine::Plugin.register(:foo) {} -- 2.39.5