summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/my_controller.rb19
-rw-r--r--test/functional/my_controller_test.rb5
2 files changed, 15 insertions, 9 deletions
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb
index ab7b1828e..84f5b20ca 100644
--- a/app/controllers/my_controller.rb
+++ b/app/controllers/my_controller.rb
@@ -147,15 +147,16 @@ class MyController < ApplicationController
# params[:block] : id of the block to add
def add_block
block = params[:block].to_s.underscore
- (render :nothing => true; return) unless block && (BLOCKS.keys.include? block)
- @user = User.current
- layout = @user.pref[:my_page_layout] || {}
- # remove if already present in a group
- %w(top left right).each {|f| (layout[f] ||= []).delete block }
- # add it on top
- layout['top'].unshift block
- @user.pref[:my_page_layout] = layout
- @user.pref.save
+ if block.present? && BLOCKS.key?(block)
+ @user = User.current
+ layout = @user.pref[:my_page_layout] || {}
+ # remove if already present in a group
+ %w(top left right).each {|f| (layout[f] ||= []).delete block }
+ # add it on top
+ layout['top'].unshift block
+ @user.pref[:my_page_layout] = layout
+ @user.pref.save
+ end
redirect_to my_page_layout_path
end
diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb
index b04219e9f..7e9677051 100644
--- a/test/functional/my_controller_test.rb
+++ b/test/functional/my_controller_test.rb
@@ -191,6 +191,11 @@ class MyControllerTest < ActionController::TestCase
assert User.find(2).pref[:my_page_layout]['top'].include?('issuesreportedbyme')
end
+ def test_add_invalid_block_should_redirect
+ post :add_block, :block => 'invalid'
+ assert_redirected_to '/my/page_layout'
+ end
+
def test_remove_block
post :remove_block, :block => 'issuesassignedtome'
assert_redirected_to '/my/page_layout'