Project

General

Profile

« Previous | Next » 

Revision e7803819

Added by Marek Hulán about 9 years ago

Fixes #9884 - refresh deleted external usergroups

View differences:

app/controllers/usergroups_controller.rb
class UsergroupsController < ApplicationController
include Foreman::Controller::AutoCompleteSearch
before_filter :find_resource, :only => [:edit, :update, :destroy]
before_filter :get_external_usergroups_to_refresh, :only => [:update]
after_filter :refresh_external_usergroups, :only => [:create, :update]
def index
......
Usergroup.authorized(permission).find(params[:id])
end
def get_external_usergroups_to_refresh
# we need to load current status, so we call all explicitly
@external_usergroups = @usergroup.external_usergroups.all
end
def external_usergroups
@external_usergroups || []
end
def refresh_external_usergroups
@usergroup.external_usergroups.map(&:refresh)
(external_usergroups + @usergroup.external_usergroups).uniq.map(&:refresh)
end
end
test/functional/usergroups_controller_test.rb
User.any_instance.expects(:expire_topbar_cache).twice
put :update, { :id => usergroup.id, :usergroup => {:admin => true }}, set_session_user
end
test 'external user group is refreshed even when destroyed' do
AuthSourceLdap.any_instance.stubs(:valid_group? => true)
external = FactoryGirl.create(:external_usergroup)
ExternalUsergroup.any_instance.expects(:refresh).returns(true)
put :update, { :id => external.usergroup_id, :usergroup => { :external_usergroups_attributes => {
'0' => {'_destroy' => '1', 'name' => external.name, 'auth_source_id' => external.auth_source_id, 'id' => external.id}
}}}, set_session_user
assert_response :redirect
end
end

Also available in: Unified diff