123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- require 'test_helper'
- class RoleTest < ActiveSupport::TestCase
- test 'permission' do
- permission_test = Permission.create_or_update(
- name: 'test',
- note: 'parent test permission',
- preferences: {
- disabled: true
- },
- )
- permission_test_agent = Permission.create_or_update(
- name: 'test.agent',
- note: 'agent test permission',
- preferences: {
- not: ['test.customer'],
- },
- )
- permission_test_customer = Permission.create_or_update(
- name: 'test.customer',
- note: 'customer test permission',
- preferences: {
- not: ['test.agent'],
- },
- )
- permission_test_normal = Permission.create_or_update(
- name: 'test.normal',
- note: 'normal test permission',
- preferences: {},
- )
- assert_raises(RuntimeError) do
- Role.create(
- name: 'Test1',
- note: 'Test1 Role.',
- permissions: [permission_test],
- updated_by_id: 1,
- created_by_id: 1
- )
- end
- assert_raises(RuntimeError) do
- Role.create(
- name: 'Test1',
- note: 'Test1 Role.',
- permissions: [permission_test_agent, permission_test_customer],
- updated_by_id: 1,
- created_by_id: 1
- )
- end
- assert_raises(RuntimeError) do
- Role.create(
- name: 'Test1',
- note: 'Test1 Role.',
- permissions: [permission_test_normal, permission_test_agent, permission_test_customer],
- updated_by_id: 1,
- created_by_id: 1
- )
- end
- role11 = Role.create(
- name: 'Test1.1',
- note: 'Test1.1 Role.',
- permissions: [permission_test_agent],
- updated_by_id: 1,
- created_by_id: 1
- )
- role12 = Role.create(
- name: 'Test1.2',
- note: 'Test1.2 Role.',
- permissions: [permission_test_customer],
- updated_by_id: 1,
- created_by_id: 1
- )
- role13 = Role.create(
- name: 'Test1.3',
- note: 'Test1.3 Role.',
- permissions: [permission_test_normal],
- updated_by_id: 1,
- created_by_id: 1
- )
- role14 = Role.create(
- name: 'Test1.4',
- note: 'Test1.4 Role.',
- permissions: [permission_test_normal, permission_test_customer],
- updated_by_id: 1,
- created_by_id: 1
- )
- end
- test 'permission default' do
- roles = Role.with_permissions('not_existing')
- assert(roles.blank?)
- roles = Role.with_permissions('admin')
- assert_equal('Admin', roles.first.name)
- roles = Role.with_permissions('admin.session')
- assert_equal('Admin', roles.first.name)
- roles = Role.with_permissions(['admin.session', 'not_existing'])
- assert_equal('Admin', roles.first.name)
- roles = Role.with_permissions('ticket.agent')
- assert_equal('Agent', roles.first.name)
- roles = Role.with_permissions(['ticket.agent', 'not_existing'])
- assert_equal('Agent', roles.first.name)
- roles = Role.with_permissions('ticket.customer')
- assert_equal('Customer', roles.first.name)
- roles = Role.with_permissions(['ticket.customer', 'not_existing'])
- assert_equal('Customer', roles.first.name)
- end
- test 'with permission' do
- permission_test1 = Permission.create_or_update(
- name: 'test-with-permission1',
- note: 'parent test permission 1',
- )
- permission_test2 = Permission.create_or_update(
- name: 'test-with-permission2',
- note: 'parent test permission 2',
- )
- name = rand(999_999_999)
- role = Role.create(
- name: "Test with Permission? #{name}",
- note: "Test with Permission? #{name} Role.",
- permissions: [permission_test2],
- updated_by_id: 1,
- created_by_id: 1
- )
- assert_not(role.with_permission?('test-with-permission1'))
- assert(role.with_permission?('test-with-permission2'))
- assert(role.with_permission?(['test-with-permission2', 'some_other_permission']))
- end
- test 'default_at_signup' do
- agent_role = Role.find_by(name: 'Agent')
- assert_raises(Exceptions::UnprocessableEntity) do
- agent_role.default_at_signup = true
- agent_role.save!
- end
- admin_role = Role.find_by(name: 'Admin')
- assert_raises(Exceptions::UnprocessableEntity) do
- admin_role.default_at_signup = true
- admin_role.save!
- end
- assert_raises(Exceptions::UnprocessableEntity) do
- Role.create!(
- name: 'Test1',
- note: 'Test1 Role.',
- default_at_signup: true,
- permissions: [Permission.find_by(name: 'admin')],
- updated_by_id: 1,
- created_by_id: 1
- )
- end
- role = Role.create!(
- name: 'Test1',
- note: 'Test1 Role.',
- default_at_signup: false,
- permissions: [Permission.find_by(name: 'admin')],
- updated_by_id: 1,
- created_by_id: 1
- )
- assert(role)
- permissions = Permission.where('name LIKE ? OR name = ?', 'admin%', 'ticket.agent').pluck(:name) # get all administrative permissions
- permissions.each do |type|
- assert_raises(Exceptions::UnprocessableEntity) do
- Role.create!(
- name: "Test1_#{type}",
- note: 'Test1 Role.',
- default_at_signup: true,
- permissions: [Permission.find_by(name: type)],
- updated_by_id: 1,
- created_by_id: 1
- )
- end
- role = Role.create!(
- name: "Test1_#{type}",
- note: 'Test1 Role.',
- default_at_signup: false,
- permissions: [Permission.find_by(name: type)],
- updated_by_id: 1,
- created_by_id: 1
- )
- assert(role)
- end
- assert_raises(Exceptions::UnprocessableEntity) do
- Role.create!(
- name: 'Test2',
- note: 'Test2 Role.',
- default_at_signup: true,
- permissions: [Permission.find_by(name: 'ticket.agent')],
- updated_by_id: 1,
- created_by_id: 1
- )
- end
- role = Role.create!(
- name: 'Test2',
- note: 'Test2 Role.',
- default_at_signup: false,
- permissions: [Permission.find_by(name: 'ticket.agent')],
- updated_by_id: 1,
- created_by_id: 1
- )
- assert(role)
- end
- end
|