From 4bb7306ccfa845399ef53a676935982453d51617 Mon Sep 17 00:00:00 2001 From: Pikender Sharma Date: Tue, 6 Nov 2012 13:34:14 +0530 Subject: [PATCH] Controller metadata methods (user_for_paper_trail and info_for_paper_trail) should be evaluated when paper trail is enabled for controller --- lib/paper_trail/controller.rb | 6 +++--- test/functional/controller_test.rb | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/paper_trail/controller.rb b/lib/paper_trail/controller.rb index 1b317f7a..1e18887f 100644 --- a/lib/paper_trail/controller.rb +++ b/lib/paper_trail/controller.rb @@ -2,9 +2,9 @@ module PaperTrail module Controller def self.included(base) + base.before_filter :set_paper_trail_enabled_for_controller base.before_filter :set_paper_trail_whodunnit base.before_filter :set_paper_trail_controller_info - base.before_filter :set_paper_trail_enabled_for_controller end protected @@ -57,7 +57,7 @@ module PaperTrail # Tells PaperTrail who is responsible for any changes that occur. def set_paper_trail_whodunnit - ::PaperTrail.whodunnit = user_for_paper_trail + ::PaperTrail.whodunnit = user_for_paper_trail if paper_trail_enabled_for_controller end # DEPRECATED: please use `set_paper_trail_whodunnit` instead. @@ -69,7 +69,7 @@ module PaperTrail # Tells PaperTrail any information from the controller you want # to store alongside any changes that occur. def set_paper_trail_controller_info - ::PaperTrail.controller_info = info_for_paper_trail + ::PaperTrail.controller_info = info_for_paper_trail if paper_trail_enabled_for_controller end end diff --git a/test/functional/controller_test.rb b/test/functional/controller_test.rb index 4bd169cf..122ad146 100644 --- a/test/functional/controller_test.rb +++ b/test/functional/controller_test.rb @@ -68,4 +68,23 @@ class ControllerTest < ActionController::TestCase assert_equal '127.0.0.1', versions_for_widget.last.ip assert_equal 'Rails Testing', versions_for_widget.last.user_agent end + + test "controller metadata methods should get evaluated if paper trail is enabled for controller" do + @request.env['HTTP_USER_AGENT'] = 'User-Agent' + post :create, :widget => { :name => 'Flugel' } + assert PaperTrail.enabled_for_controller? + assert_equal 153, PaperTrail.whodunnit + assert PaperTrail.controller_info.present? + assert PaperTrail.controller_info.keys.include?(:ip) + assert PaperTrail.controller_info.keys.include?(:user_agent) + end + + test "controller metadata methods should not get evaluated if paper trail is disabled for controller" do + @request.env['HTTP_USER_AGENT'] = 'Disable User-Agent' + post :create, :widget => { :name => 'Flugel' } + assert_equal 0, assigns(:widget).versions.length + assert !PaperTrail.enabled_for_controller? + assert PaperTrail.whodunnit.nil? + assert PaperTrail.controller_info.nil? + end end