Project

General

Profile

« Previous | Next » 

Revision 615ff085

Added by Marek Hulán about 10 years ago

Fixes #4537 - user can set empty roles array via API

View differences:

app/models/user.rb
end
def role_ids_with_change_detection=(roles)
roles ||= [] # in API, role_ids is converted to nil if user sent empty array
@role_ids_changed = roles.uniq.select(&:present?).map(&:to_i).sort != role_ids.sort
@role_ids_was = role_ids.clone
self.role_ids_without_change_detection = roles
test/unit/user_test.rb
assert_equal user.role_ids_was, [foobar.id, barfoo.id]
end
test "role_ids can be empty array which removes all roles" do
user = users(:one)
foobar = Role.find_or_create_by_name :name => "foobar"
barfoo = Role.find_or_create_by_name :name => "barfoo"
user.roles<< foobar
user.role_ids = []
assert_empty user.roles
end
test "role_ids can be nil resulting in no role" do
user = users(:one)
foobar = Role.find_or_create_by_name :name => "foobar"
barfoo = Role.find_or_create_by_name :name => "barfoo"
user.roles<< foobar
user.role_ids = nil
assert_empty user.roles
end
test "admin? detection for user admin flag" do
admin = FactoryGirl.build(:user, :admin => true)
assert admin.admin?, 'user admin flag was missed'

Also available in: Unified diff