123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- require 'test_helper'
- class UserValidateAgentLimit < ActiveSupport::TestCase
- test 'user_validate_agent_limit' do
- UserInfo.current_user_id = 1
- agent_max = User.with_permissions('ticket.agent').count + 2
- Setting.set('system_agent_limit', agent_max)
- role_agent = Role.lookup(name: 'Agent')
- role_customer = Role.lookup(name: 'Customer')
- user1 = User.create!(
- firstname: 'Firstname',
- lastname: 'Lastname',
- email: 'some-agentlimit-user@example.com',
- login: 'some-agentlimit-user@example.com',
- roles: [role_agent],
- active: true,
- )
- user2 = User.create!(
- firstname: 'Firstname1',
- lastname: 'Lastname1',
- email: 'some-agentlimit-user-1@example.com',
- login: 'some-agentlimit-user-1@example.com',
- roles: [role_agent],
- active: true,
- )
- assert_raises(Exceptions::UnprocessableEntity) do
- user3 = User.create!(
- firstname: 'Firstname2',
- lastname: 'Lastname2',
- email: 'some-agentlimit-user-2@example.com',
- login: 'some-agentlimit-user-2@example.com',
- roles: [role_agent],
- active: true,
- )
- end
- user3 = User.create!(
- firstname: 'Firstname2',
- lastname: 'Lastname2',
- email: 'some-agentlimit-user-2@example.com',
- login: 'some-agentlimit-user-2@example.com',
- roles: [role_customer],
- active: true,
- )
- assert_raises(Exceptions::UnprocessableEntity) do
- user3.roles = [role_agent]
- end
- assert_equal(User.with_permissions('ticket.agent').count, agent_max)
- Setting.set('system_agent_limit', agent_max + 1)
- user3.reload
- user3.roles = [role_agent]
- user3.save!
- user3.active = false
- user3.save!
- Setting.set('system_agent_limit', agent_max)
- # try to activate inactive agent again
- assert_raises(Exceptions::UnprocessableEntity) do
- user3 = User.find(user3.id)
- user3.active = true
- user3.save!
- end
- assert_equal(User.with_permissions('ticket.agent').count, agent_max)
- # try to activate inactive role again
- role_agent_limit = Role.create!(
- name: 'agent-limit-test-invalid-role',
- note: 'agent-limit-test-invalid-role Role.',
- permissions: Permission.where(name: 'ticket.agent'),
- active: false,
- )
- user3.roles = [role_agent_limit]
- user3.active = true
- user3.save!
- assert_raises(Exceptions::UnprocessableEntity) do
- role_agent_limit.active = true
- role_agent_limit.save!
- end
- assert_equal(User.with_permissions('ticket.agent').count, agent_max)
- # set roles of agent again
- role_admin = Role.lookup(name: 'Admin')
- user2.roles = [role_agent, role_admin]
- user2.save!
- user2.role_ids = [role_admin.id, role_agent_limit.id]
- user2.save!
- user2.role_ids = [role_admin.id.to_s, role_agent_limit.id.to_s]
- user2.save!
- user1.destroy!
- user2.destroy!
- user3.destroy!
- role_agent_limit.destroy!
- Setting.set('system_agent_limit', nil)
- end
- end
|