Commit f835862a9b231c6b9b9a1034aa82ec6ed7fc6afe

Authored by Daniela Feitosa
1 parent 9a1bc7ba

Avoid crash when try to remove unexistent profile

(ActionItem3021)
app/controllers/admin/users_controller.rb
@@ -48,11 +48,11 @@ class UsersController < AdminController @@ -48,11 +48,11 @@ class UsersController < AdminController
48 48
49 def destroy_user 49 def destroy_user
50 if request.post? 50 if request.post?
51 - person = environment.people.find(params[:id])  
52 - if person.destroy 51 + person = environment.people.find_by_id(params[:id])
  52 + if person && person.destroy
53 session[:notice] = _('The profile was deleted.') 53 session[:notice] = _('The profile was deleted.')
54 else 54 else
55 - session[:notice] = _('Could not delete profile') 55 + session[:notice] = _('Could not remove profile')
56 end 56 end
57 end 57 end
58 redirect_to :action => :index, :q => params[:q], :filter => params[:filter] 58 redirect_to :action => :index, :q => params[:q], :filter => params[:filter]
features/manage_users.feature
@@ -26,7 +26,7 @@ Background: @@ -26,7 +26,7 @@ Background:
26 Then I should see "Deactivate user" within "tr[title='Paulo Santos']" 26 Then I should see "Deactivate user" within "tr[title='Paulo Santos']"
27 27
28 @selenium 28 @selenium
29 - Scenario: ban user 29 + Scenario: remove user
30 When I follow "Remove" within "tr[title='Joao Silva']" 30 When I follow "Remove" within "tr[title='Joao Silva']"
31 And I confirm the "Do you want to remove this user?" dialog 31 And I confirm the "Do you want to remove this user?" dialog
32 And I go to /admin/users 32 And I go to /admin/users
@@ -44,4 +44,4 @@ Background: @@ -44,4 +44,4 @@ Background:
44 And I confirm the "Do you want to set this user as administrator?" dialog 44 And I confirm the "Do you want to set this user as administrator?" dialog
45 When I follow "Reset admin role" within "tr[title='Paulo Santos']" 45 When I follow "Reset admin role" within "tr[title='Paulo Santos']"
46 And I confirm the "Do you want to reset this user as administrator?" dialog 46 And I confirm the "Do you want to reset this user as administrator?" dialog
47 - Then I should see "Set admin role" within "tr[title='Paulo Santos']"  
48 \ No newline at end of file 47 \ No newline at end of file
  48 + Then I should see "Set admin role" within "tr[title='Paulo Santos']"
test/functional/users_controller_test.rb
@@ -133,4 +133,20 @@ class UsersControllerTest < ActionController::TestCase @@ -133,4 +133,20 @@ class UsersControllerTest < ActionController::TestCase
133 assert_equal 'name;email', @response.body.split("\n")[0] 133 assert_equal 'name;email', @response.body.split("\n")[0]
134 end 134 end
135 135
  136 + should 'be able to remove a person' do
  137 + person = fast_create(Person, :environment_id => environment.id)
  138 + assert_difference Person, :count, -1 do
  139 + post :destroy_user, :id => person.id
  140 + end
  141 + end
  142 +
  143 + should 'not crash if user does not exist' do
  144 + person = fast_create(Person)
  145 +
  146 + assert_no_difference Person, :count do
  147 + post :destroy_user, :id => 99999
  148 + end
  149 + assert_redirected_to :action => 'index'
  150 + end
  151 +
136 end 152 end