tags_controller_policy_spec.rb 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. describe Controllers::TagsControllerPolicy do
  4. subject { described_class.new(user, record) }
  5. let(:record_class) { TagsController }
  6. let(:record) do
  7. rec = record_class.new
  8. rec.params = params
  9. rec
  10. end
  11. context 'with ticket' do
  12. let(:ticket) { create(:ticket) }
  13. let(:params) do
  14. {
  15. object: 'Ticket',
  16. o_id: ticket.id,
  17. }
  18. end
  19. context 'when user has edit permission' do
  20. let(:user) { create(:agent, groups: [ticket.group]) }
  21. it { is_expected.to permit_actions(%i[add remove]) }
  22. end
  23. context 'when user has no edit permission' do
  24. let(:user) { create(:agent) }
  25. it { is_expected.to forbid_actions(%i[add remove]) }
  26. end
  27. context 'when user has no edit permission on this ticket' do
  28. let(:user) { create(:agent) }
  29. before do
  30. user.user_groups.create! group: ticket.group, access: 'read'
  31. end
  32. it { is_expected.to forbid_actions(%i[add remove]) }
  33. end
  34. context 'when user is customer' do
  35. let(:user) { ticket.customer }
  36. it { is_expected.to forbid_actions(%i[add remove]) }
  37. end
  38. end
  39. context 'with knowledge base answer' do
  40. let(:kb_answer) { create(:knowledge_base_answer) }
  41. let(:params) do
  42. {
  43. object: 'KnowledgeBase::Answer',
  44. o_id: kb_answer.id,
  45. }
  46. end
  47. context 'when user has edit permission' do
  48. let(:role) { create(:role, permission_names: %w[knowledge_base.editor]) }
  49. let(:user) { create(:agent, roles: [role]) }
  50. it { is_expected.to permit_actions(%i[add remove]) }
  51. end
  52. context 'when user has no edit permission' do
  53. let(:user) { create(:agent) }
  54. it { is_expected.to forbid_actions(%i[add remove]) }
  55. end
  56. context 'when user is customer' do
  57. let(:user) { create(:customer) }
  58. it { is_expected.to forbid_actions(%i[add remove]) }
  59. end
  60. end
  61. end