Commit f835862a9b231c6b9b9a1034aa82ec6ed7fc6afe
1 parent
9a1bc7ba
Exists in
master
and in
29 other branches
Avoid crash when try to remove unexistent profile
(ActionItem3021)
Showing
3 changed files
with
21 additions
and
5 deletions
Show diff stats
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 |