annotate test/unit/lib/redmine/safe_attributes_test.rb @ 1466:834828a14f2b bug_598

Close obsolete branch bug_598
author Chris Cannam
date Fri, 21 Jun 2013 14:51:55 +0100
parents 433d4f72a19b
children 622f24f53b42
rev   line source
Chris@119 1 # Redmine - project management software
Chris@1115 2 # Copyright (C) 2006-2012 Jean-Philippe Lang
Chris@119 3 #
Chris@119 4 # This program is free software; you can redistribute it and/or
Chris@119 5 # modify it under the terms of the GNU General Public License
Chris@119 6 # as published by the Free Software Foundation; either version 2
Chris@119 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@119 9 # This program is distributed in the hope that it will be useful,
Chris@119 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@119 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@119 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@119 14 # You should have received a copy of the GNU General Public License
Chris@119 15 # along with this program; if not, write to the Free Software
Chris@119 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@119 17
Chris@119 18 require File.expand_path('../../../../test_helper', __FILE__)
Chris@119 19
Chris@119 20 class Redmine::SafeAttributesTest < ActiveSupport::TestCase
Chris@1115 21 fixtures :users
Chris@909 22
Chris@119 23 class Base
Chris@119 24 def attributes=(attrs)
Chris@119 25 attrs.each do |key, value|
Chris@119 26 send("#{key}=", value)
Chris@119 27 end
Chris@119 28 end
Chris@119 29 end
Chris@909 30
Chris@119 31 class Person < Base
Chris@119 32 attr_accessor :firstname, :lastname, :login
Chris@119 33 include Redmine::SafeAttributes
Chris@119 34 safe_attributes :firstname, :lastname
Chris@119 35 safe_attributes :login, :if => lambda {|person, user| user.admin?}
Chris@119 36 end
Chris@909 37
Chris@119 38 class Book < Base
Chris@119 39 attr_accessor :title
Chris@119 40 include Redmine::SafeAttributes
Chris@119 41 safe_attributes :title
Chris@119 42 end
Chris@909 43
Chris@119 44 def test_safe_attribute_names
Chris@119 45 p = Person.new
Chris@1115 46 user = User.anonymous
Chris@1115 47 assert_equal ['firstname', 'lastname'], p.safe_attribute_names(user)
Chris@1115 48 assert p.safe_attribute?('firstname', user)
Chris@1115 49 assert !p.safe_attribute?('login', user)
Chris@1115 50
Chris@1115 51 p = Person.new
Chris@1115 52 user = User.find(1)
Chris@1115 53 assert_equal ['firstname', 'lastname', 'login'], p.safe_attribute_names(user)
Chris@1115 54 assert p.safe_attribute?('firstname', user)
Chris@1115 55 assert p.safe_attribute?('login', user)
Chris@119 56 end
Chris@909 57
Chris@119 58 def test_safe_attribute_names_without_user
Chris@119 59 p = Person.new
Chris@119 60 User.current = nil
Chris@119 61 assert_equal ['firstname', 'lastname'], p.safe_attribute_names
Chris@1115 62 assert p.safe_attribute?('firstname')
Chris@1115 63 assert !p.safe_attribute?('login')
Chris@1115 64
Chris@1115 65 p = Person.new
Chris@119 66 User.current = User.find(1)
Chris@119 67 assert_equal ['firstname', 'lastname', 'login'], p.safe_attribute_names
Chris@1115 68 assert p.safe_attribute?('firstname')
Chris@1115 69 assert p.safe_attribute?('login')
Chris@119 70 end
Chris@909 71
Chris@119 72 def test_set_safe_attributes
Chris@119 73 p = Person.new
Chris@119 74 p.send('safe_attributes=', {'firstname' => 'John', 'lastname' => 'Smith', 'login' => 'jsmith'}, User.anonymous)
Chris@119 75 assert_equal 'John', p.firstname
Chris@119 76 assert_equal 'Smith', p.lastname
Chris@119 77 assert_nil p.login
Chris@119 78
Chris@119 79 p = Person.new
Chris@119 80 User.current = User.find(1)
Chris@119 81 p.send('safe_attributes=', {'firstname' => 'John', 'lastname' => 'Smith', 'login' => 'jsmith'}, User.find(1))
Chris@119 82 assert_equal 'John', p.firstname
Chris@119 83 assert_equal 'Smith', p.lastname
Chris@119 84 assert_equal 'jsmith', p.login
Chris@119 85 end
Chris@909 86
Chris@119 87 def test_set_safe_attributes_without_user
Chris@119 88 p = Person.new
Chris@119 89 User.current = nil
Chris@119 90 p.safe_attributes = {'firstname' => 'John', 'lastname' => 'Smith', 'login' => 'jsmith'}
Chris@119 91 assert_equal 'John', p.firstname
Chris@119 92 assert_equal 'Smith', p.lastname
Chris@119 93 assert_nil p.login
Chris@119 94
Chris@119 95 p = Person.new
Chris@119 96 User.current = User.find(1)
Chris@119 97 p.safe_attributes = {'firstname' => 'John', 'lastname' => 'Smith', 'login' => 'jsmith'}
Chris@119 98 assert_equal 'John', p.firstname
Chris@119 99 assert_equal 'Smith', p.lastname
Chris@119 100 assert_equal 'jsmith', p.login
Chris@119 101 end
Chris@119 102 end