Project

General

Profile

« Previous | Next » 

Revision acfbc458

Added by Marek Hulán about 10 years ago

fixes #812 - new permissions model, user group role and nest support, role filters for better granularity

Contributions from:

View differences:

test/functional/roles_controller_test.rb
class RolesControllerTest < ActionController::TestCase
def test_get_index
test 'get index' do
get :index, {}, set_session_user
assert_response :success
assert_template 'index'
......
:content => 'Manager'
end
def test_get_new
test 'get new' do
get :new, {}, set_session_user
assert_response :success
assert_template 'new'
end
def test_post_new_with_validaton_failure
post :create, { :role => {:name => '',
:permissions => ['add_hosts', 'edit_hosts', 'edit_ptables', '']
}}, set_session_user
test 'empty name validation' do
post :create, { :role => {:name => ''}}, set_session_user
assert_response :success
assert_template 'new'
end
def test_get_edit
test 'creates role' do
post :create, { :role => {:name => 'test role'}}, set_session_user
assert_redirected_to roles_path
assert Role.find_by_name('test role')
end
test 'get edit goes to right template' do
get :edit, {:id => 1}, set_session_user
assert_response :success
assert_template 'edit'
assert_equal Role.find(1), assigns(:role)
end
def test_post_edit
put :update, {:id => 1,
:role => {:name => 'Manager',
:permissions => ['edit_hosts']
}}, set_session_user
test 'put edit updates role' do
role = FactoryGirl.create(:role)
put :update, {:id => role.id, :role => {:name => 'masterManager'}}, set_session_user
assert_redirected_to roles_path
role = Role.find(1)
assert_equal [:edit_hosts], role.permissions
role.reload
assert_equal 'masterManager', role.name
end
def test_destroy
r = Role.new(:name => 'ToBeDestroyed', :permissions => [:view_ptables])
assert r.save
test 'delete destroy removes role' do
role = FactoryGirl.build(:role, :name => 'ToBeDestroyed')
role.add_permissions! :view_ptables
delete :destroy, {:id => r}, set_session_user
delete :destroy, {:id => role}, set_session_user
assert_redirected_to roles_path
assert_nil Role.find_by_id(r.id)
assert_nil Role.find_by_id(role.id)
end
def test_destroy_role_in_use
test 'roles in use cannot be destroyed' do
users(:one).roles = [roles(:manager)] # make user one a manager
delete :destroy, {:id => roles(:manager)}, set_session_user
assert_redirected_to roles_path
......
assert_not_nil Role.find_by_id(roles(:manager).id)
end
def test_get_report
get :report, {}, set_session_user
assert_response :success
assert_template 'report'
assert_not_nil assigns(:roles)
assert_equal Role.all.sort, assigns(:roles).sort
end
def test_post_report
post :report, { :permissions => { '0' => '', '1' => ['edit_issues'], '3' => ['add_issues', 'delete_issues']} }, set_session_user
assert_redirected_to roles_path
assert_equal [:edit_issues], Role.find(1).permissions
assert_equal [:add_issues, :delete_issues], Role.find(3).permissions
assert Role.find(2).permissions.empty?
end
def test_clear_all_permissions
post :report, { :permissions => { '0' => '' } }, set_session_user
assert_redirected_to roles_path
assert Role.find(1).permissions.empty?
context 'clone' do
setup do
@role = FactoryGirl.build(:role, :name => 'ToBeDestroyed')
@role.add_permissions! :view_ptables
end
test 'renders new page with hidden field original_role_id' do
get :clone, { :id => @role.id } , set_session_user
assert_template 'new'
end
test 'original_role_id is used to create cloned role if set' do
params = { :role => {:name => 'clonedrole'},
:original_role_id => @role.id,
:cloned_role => true }
post :create, params, set_session_user
assert_redirected_to roles_url
cloned_role = Role.find_by_name('clonedrole')
assert_not_nil cloned_role
assert_equal @role.permissions, cloned_role.permissions
end
end
end

Also available in: Unified diff