123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
- require 'test_helper'
- class RoleValidateAgentLimit < ActiveSupport::TestCase
- test 'role validate agent limit' do
- agent_max = User.with_permissions('ticket.agent').count
- UserInfo.current_user_id = 1
- Setting.set('system_agent_limit', agent_max + 2)
- permission_ticket_agent = Permission.where(name: 'ticket.agent')
- role_agent_limit_success = Role.create!(
- name: 'agent-limit-test-success',
- note: 'agent-limit-test-success Role.',
- permissions: [],
- active: true,
- )
- role_agent_limit_fail = Role.create!(
- name: 'agent-limit-test-fail',
- note: 'agent-limit-test-fail Role.',
- permissions: [],
- active: true,
- )
- user1 = User.create!(
- firstname: 'Firstname',
- lastname: 'Lastname',
- email: 'some-agentlimit-role@example.com',
- login: 'some-agentlimit-role@example.com',
- roles: [role_agent_limit_success],
- active: true,
- )
- user2 = User.create!(
- firstname: 'Firstname1',
- lastname: 'Lastname1',
- email: 'some-agentlimit-role-1@example.com',
- login: 'some-agentlimit-role-1@example.com',
- roles: [role_agent_limit_success],
- active: true,
- )
- user3 = User.create!(
- firstname: 'Firstname2',
- lastname: 'Lastname2',
- email: 'some-agentlimit-role-2@example.com',
- login: 'some-agentlimit-role-2@example.com',
- roles: [role_agent_limit_fail],
- active: true,
- )
- role_agent_limit_success.permissions = permission_ticket_agent
- assert_raises(Exceptions::UnprocessableEntity) do
- role_agent_limit_fail.permissions = permission_ticket_agent
- end
- role_agent_limit_fail.active = false
- role_agent_limit_fail.save!
- role_agent_limit_fail.permissions = permission_ticket_agent
- assert_raises(Exceptions::UnprocessableEntity) do
- role_agent_limit_fail.active = true
- role_agent_limit_fail.save!
- end
- user1.destroy!
- user2.destroy!
- user3.destroy!
- role_agent_limit_success.destroy!
- role_agent_limit_fail.destroy!
- Setting.set('system_agent_limit', nil)
- end
- test 'role validate agent limit as string' do
- agent_max = User.with_permissions('ticket.agent').count
- UserInfo.current_user_id = 1
- Setting.set('system_agent_limit', (agent_max + 2).to_s)
- permission_ticket_agent = Permission.where(name: 'ticket.agent')
- role_agent_limit_success = Role.create!(
- name: 'agent-limit-test-success',
- note: 'agent-limit-test-success Role.',
- permissions: [],
- active: true,
- )
- role_agent_limit_fail = Role.create!(
- name: 'agent-limit-test-fail',
- note: 'agent-limit-test-fail Role.',
- permissions: [],
- active: true,
- )
- user1 = User.create!(
- firstname: 'Firstname',
- lastname: 'Lastname',
- email: 'some-agentlimit-role@example.com',
- login: 'some-agentlimit-role@example.com',
- roles: [role_agent_limit_success],
- active: true,
- )
- user2 = User.create!(
- firstname: 'Firstname1',
- lastname: 'Lastname1',
- email: 'some-agentlimit-role-1@example.com',
- login: 'some-agentlimit-role-1@example.com',
- roles: [role_agent_limit_success],
- active: true,
- )
- user3 = User.create!(
- firstname: 'Firstname2',
- lastname: 'Lastname2',
- email: 'some-agentlimit-role-2@example.com',
- login: 'some-agentlimit-role-2@example.com',
- roles: [role_agent_limit_fail],
- active: true,
- )
- role_agent_limit_success.permissions = permission_ticket_agent
- assert_raises(Exceptions::UnprocessableEntity) do
- role_agent_limit_fail.permissions = permission_ticket_agent
- end
- role_agent_limit_fail.active = false
- role_agent_limit_fail.save!
- role_agent_limit_fail.permissions = permission_ticket_agent
- assert_raises(Exceptions::UnprocessableEntity) do
- role_agent_limit_fail.active = true
- role_agent_limit_fail.save!
- end
- user1.destroy!
- user2.destroy!
- user3.destroy!
- role_agent_limit_success.destroy!
- role_agent_limit_fail.destroy!
- Setting.set('system_agent_limit', nil)
- end
- test 'role validate agent limit - 1 user 2 ticket.agent roles' do
- current_agent_max = User.with_permissions('ticket.agent').count + 1
- UserInfo.current_user_id = 1
- Setting.set('system_agent_limit', current_agent_max)
- permission_ticket_agent = Permission.find_by(name: 'ticket.agent')
- role_agent_limit1 = Role.create!(
- name: 'agent-limit-test1',
- note: 'agent-limit-test1 Role.',
- permissions: [permission_ticket_agent],
- active: true,
- )
- role_agent_limit2 = Role.create!(
- name: 'agent-limit-test2',
- note: 'agent-limit-test2 Role.',
- permissions: [permission_ticket_agent],
- active: true,
- )
- user1 = User.create!(
- firstname: 'Firstname',
- lastname: 'Lastname',
- email: 'some-agentlimit-role@example.com',
- login: 'some-agentlimit-role@example.com',
- roles: [role_agent_limit1, role_agent_limit2],
- active: true,
- )
- user1.roles = Role.where(name: %w[Admin Agent])
- user1.role_ids = [Role.find_by(name: 'Agent').id]
- user1.role_ids = [Role.find_by(name: 'Agent').id, role_agent_limit1.id]
- user1.role_ids = [Role.find_by(name: 'Agent').id, role_agent_limit1.id, role_agent_limit2.id]
- assert_raises(Exceptions::UnprocessableEntity) do
- User.create!(
- firstname: 'Firstname2',
- lastname: 'Lastname2',
- email: 'some-agentlimit-role-2@example.com',
- login: 'some-agentlimit-role-2@example.com',
- roles: [role_agent_limit1],
- active: true,
- )
- end
- assert_equal(current_agent_max, User.with_permissions('ticket.agent').count)
- current_agent_max = User.with_permissions('ticket.agent').count + 1
- Setting.set('system_agent_limit', current_agent_max)
- User.create!(
- firstname: 'Firstname',
- lastname: 'Lastname',
- email: 'some-agentlimit-role-3@example.com',
- login: 'some-agentlimit-role-3@example.com',
- role_ids: [Role.find_by(name: 'Agent').id],
- active: true,
- )
- role_agent_limit1.destroy!
- role_agent_limit2.destroy!
- Setting.set('system_agent_limit', nil)
- end
- end
|