user_validate_agent_limit_test.rb 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. require 'test_helper'
  2. class UserValidateAgentLimit < ActiveSupport::TestCase
  3. test 'user_validate_agent_limit' do
  4. UserInfo.current_user_id = 1
  5. agent_max = User.with_permissions('ticket.agent').count + 2
  6. Setting.set('system_agent_limit', agent_max)
  7. role_agent = Role.lookup(name: 'Agent')
  8. role_customer = Role.lookup(name: 'Customer')
  9. user1 = User.create!(
  10. firstname: 'Firstname',
  11. lastname: 'Lastname',
  12. email: 'some-agentlimit-user@example.com',
  13. login: 'some-agentlimit-user@example.com',
  14. roles: [role_agent],
  15. active: true,
  16. )
  17. user2 = User.create!(
  18. firstname: 'Firstname1',
  19. lastname: 'Lastname1',
  20. email: 'some-agentlimit-user-1@example.com',
  21. login: 'some-agentlimit-user-1@example.com',
  22. roles: [role_agent],
  23. active: true,
  24. )
  25. assert_raises(Exceptions::UnprocessableEntity) do
  26. user3 = User.create!(
  27. firstname: 'Firstname2',
  28. lastname: 'Lastname2',
  29. email: 'some-agentlimit-user-2@example.com',
  30. login: 'some-agentlimit-user-2@example.com',
  31. roles: [role_agent],
  32. active: true,
  33. )
  34. end
  35. user3 = User.create!(
  36. firstname: 'Firstname2',
  37. lastname: 'Lastname2',
  38. email: 'some-agentlimit-user-2@example.com',
  39. login: 'some-agentlimit-user-2@example.com',
  40. roles: [role_customer],
  41. active: true,
  42. )
  43. assert_raises(Exceptions::UnprocessableEntity) do
  44. user3.roles = [role_agent]
  45. end
  46. assert_equal(User.with_permissions('ticket.agent').count, agent_max)
  47. Setting.set('system_agent_limit', agent_max + 1)
  48. user3.reload
  49. user3.roles = [role_agent]
  50. user3.save!
  51. user3.active = false
  52. user3.save!
  53. Setting.set('system_agent_limit', agent_max)
  54. # try to activate inactive agent again
  55. assert_raises(Exceptions::UnprocessableEntity) do
  56. user3 = User.find(user3.id)
  57. user3.active = true
  58. user3.save!
  59. end
  60. assert_equal(User.with_permissions('ticket.agent').count, agent_max)
  61. # try to activate inactive role again
  62. role_agent_limit = Role.create!(
  63. name: 'agent-limit-test-invalid-role',
  64. note: 'agent-limit-test-invalid-role Role.',
  65. permissions: Permission.where(name: 'ticket.agent'),
  66. active: false,
  67. )
  68. user3.roles = [role_agent_limit]
  69. user3.active = true
  70. user3.save!
  71. assert_raises(Exceptions::UnprocessableEntity) do
  72. role_agent_limit.active = true
  73. role_agent_limit.save!
  74. end
  75. assert_equal(User.with_permissions('ticket.agent').count, agent_max)
  76. # set roles of agent again
  77. role_admin = Role.lookup(name: 'Admin')
  78. user2.roles = [role_agent, role_admin]
  79. user2.save!
  80. user2.role_ids = [role_admin.id, role_agent_limit.id]
  81. user2.save!
  82. user2.role_ids = [role_admin.id.to_s, role_agent_limit.id.to_s]
  83. user2.save!
  84. user1.destroy!
  85. user2.destroy!
  86. user3.destroy!
  87. role_agent_limit.destroy!
  88. Setting.set('system_agent_limit', nil)
  89. end
  90. end