assets_spec.rb 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe 'Assets', type: :system, db_strategy: :reset do
  4. let(:organization) { create(:organization, note: 'hello') }
  5. let(:customer) { create(:customer, organization: organization, note: 'hello', last_login: Time.zone.now, login_failed: 1) }
  6. let(:agent) { create(:agent, groups: [Group.find_by(name: 'Users')], note: 'hello', last_login: Time.zone.now, login_failed: 1) }
  7. let(:admin) { create(:admin, groups: [Group.find_by(name: 'Users')], note: 'hello', last_login: Time.zone.now, login_failed: 1) }
  8. let(:ticket) { create(:ticket, owner: agent, group: Group.find_by(name: 'Users'), customer: customer, created_by: admin) }
  9. context 'groups' do
  10. def group_note
  11. page.execute_script('return App.Group.first().note')
  12. end
  13. describe 'when customer', authenticated_as: :customer do
  14. it 'can not access group details' do
  15. expect(group_note).to be nil
  16. end
  17. end
  18. describe 'when agent', authenticated_as: :agent do
  19. it 'can access group details' do
  20. expect(group_note).not_to be nil
  21. end
  22. end
  23. describe 'when admin', authenticated_as: :admin do
  24. it 'can access group details' do
  25. expect(group_note).not_to be nil
  26. end
  27. end
  28. end
  29. context 'organizations' do
  30. def organization_note
  31. page.execute_script("return App.Organization.find(#{organization.id}).note")
  32. end
  33. before do
  34. visit "#ticket/zoom/#{ticket.id}"
  35. # make sure all AJAX requests are done
  36. await_empty_ajax_queue
  37. # make sure loading is completed (e.g. ticket zoom may take longer)
  38. expect(page).to have_no_css('.icon-loading', wait: 30) # rubocop:disable RSpec/ExpectInHook
  39. end
  40. describe 'when customer', authenticated_as: :customer do
  41. it 'can not access organization details' do
  42. expect(organization_note).to be nil
  43. end
  44. end
  45. describe 'when agent', authenticated_as: :agent do
  46. it 'can access organization details' do
  47. expect(organization_note).not_to be nil
  48. end
  49. end
  50. describe 'when admin', authenticated_as: :admin do
  51. it 'can access organization details' do
  52. expect(organization_note).not_to be nil
  53. end
  54. end
  55. end
  56. context 'roles' do
  57. def role_name
  58. page.execute_script('return App.Role.first().name')
  59. end
  60. before do
  61. visit "#ticket/zoom/#{ticket.id}"
  62. # make sure all AJAX requests are done
  63. await_empty_ajax_queue
  64. # make sure loading is completed (e.g. ticket zoom may take longer)
  65. expect(page).to have_no_css('.icon-loading', wait: 30) # rubocop:disable RSpec/ExpectInHook
  66. end
  67. describe 'when customer', authenticated_as: :customer do
  68. it 'can not access role details' do
  69. expect(role_name).to eq('Role_1')
  70. end
  71. end
  72. describe 'when agent', authenticated_as: :agent do
  73. it 'can access role details' do
  74. expect(role_name).not_to eq('Role_1')
  75. end
  76. end
  77. describe 'when admin', authenticated_as: :admin do
  78. it 'can access role details' do
  79. expect(role_name).not_to eq('Role_1')
  80. end
  81. end
  82. end
  83. context 'users' do
  84. def customer_email
  85. page.execute_script("return App.User.find(#{customer.id}).email")
  86. end
  87. def customer_note
  88. page.execute_script("return App.User.find(#{customer.id}).note")
  89. end
  90. def owner_firstname
  91. page.execute_script("return App.User.find(#{agent.id}).firstname")
  92. end
  93. def owner_details
  94. [
  95. page.execute_script("return App.User.find(#{agent.id}).last_login"),
  96. page.execute_script("return App.User.find(#{agent.id}).login_failed"),
  97. page.execute_script("return App.User.find(#{agent.id}).email"),
  98. page.execute_script("return App.User.find(#{agent.id}).note"),
  99. ].compact
  100. end
  101. before do
  102. visit "#ticket/zoom/#{ticket.id}"
  103. # make sure all AJAX requests are done
  104. await_empty_ajax_queue
  105. # make sure loading is completed (e.g. ticket zoom may take longer)
  106. expect(page).to have_no_css('.icon-loading', wait: 30) # rubocop:disable RSpec/ExpectInHook
  107. end
  108. describe 'when customer', authenticated_as: :customer do
  109. it 'can access customer email' do
  110. expect(customer_email).not_to be nil
  111. end
  112. it 'can not access customer note' do
  113. expect(customer_note).to be nil
  114. end
  115. it 'can not access owner details' do
  116. expect(owner_details).to be_empty
  117. end
  118. it 'can access owner firstname' do
  119. expect(owner_firstname).not_to be nil
  120. end
  121. end
  122. describe 'when agent', authenticated_as: :agent do
  123. it 'can access customer email' do
  124. expect(customer_email).not_to be nil
  125. end
  126. it 'can access customer note' do
  127. expect(customer_note).not_to be nil
  128. end
  129. it 'can access owner details' do
  130. expect(owner_details).not_to be_empty
  131. end
  132. it 'can access owner firstname' do
  133. expect(owner_firstname).not_to be nil
  134. end
  135. end
  136. describe 'when admin', authenticated_as: :admin do
  137. it 'can access customer email' do
  138. expect(customer_email).not_to be nil
  139. end
  140. it 'can access customer note' do
  141. expect(customer_note).not_to be nil
  142. end
  143. it 'can access owner details' do
  144. expect(owner_details).not_to be_empty
  145. end
  146. it 'can access owner firstname' do
  147. expect(owner_firstname).not_to be nil
  148. end
  149. end
  150. end
  151. end