Revision acfbc458
Added by Marek Hulán about 10 years ago
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
fixes #812 - new permissions model, user group role and nest support, role filters for better granularity
Contributions from: