overviews_controller_test.rb 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. require 'test_helper'
  2. class OverviewsControllerTest < ActionDispatch::IntegrationTest
  3. setup do
  4. # set accept header
  5. @headers = { 'ACCEPT' => 'application/json', 'CONTENT_TYPE' => 'application/json' }
  6. # create agent
  7. roles = Role.where(name: %w[Admin Agent])
  8. groups = Group.all
  9. UserInfo.current_user_id = 1
  10. @admin = User.create_or_update(
  11. login: 'tickets-admin',
  12. firstname: 'Tickets',
  13. lastname: 'Admin',
  14. email: 'tickets-admin@example.com',
  15. password: 'adminpw',
  16. active: true,
  17. roles: roles,
  18. groups: groups,
  19. )
  20. # create agent
  21. roles = Role.where(name: 'Agent')
  22. @agent = User.create_or_update(
  23. login: 'tickets-agent@example.com',
  24. firstname: 'Tickets',
  25. lastname: 'Agent',
  26. email: 'tickets-agent@example.com',
  27. password: 'agentpw',
  28. active: true,
  29. roles: roles,
  30. groups: Group.all,
  31. )
  32. end
  33. test 'no permissions' do
  34. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-agent', 'agentpw')
  35. params = {
  36. name: 'Overview2',
  37. link: 'my_overview',
  38. condition: {
  39. 'ticket.state_id' => {
  40. operator: 'is',
  41. value: [1, 2, 3],
  42. },
  43. },
  44. order: {
  45. by: 'created_at',
  46. direction: 'DESC',
  47. },
  48. view: {
  49. d: %w[title customer state created_at],
  50. s: %w[number title customer state created_at],
  51. m: %w[number title customer state created_at],
  52. view_mode_default: 's',
  53. },
  54. }
  55. post '/api/v1/overviews', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  56. assert_response(401)
  57. result = JSON.parse(@response.body)
  58. assert_equal(Hash, result.class)
  59. assert_equal('authentication failed', result['error'])
  60. end
  61. test 'create overviews' do
  62. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-admin', 'adminpw')
  63. params = {
  64. name: 'Overview2',
  65. link: 'my_overview',
  66. condition: {
  67. 'ticket.state_id' => {
  68. operator: 'is',
  69. value: [1, 2, 3],
  70. },
  71. },
  72. order: {
  73. by: 'created_at',
  74. direction: 'DESC',
  75. },
  76. view: {
  77. d: %w[title customer state created_at],
  78. s: %w[number title customer state created_at],
  79. m: %w[number title customer state created_at],
  80. view_mode_default: 's',
  81. },
  82. }
  83. post '/api/v1/overviews', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  84. assert_response(201)
  85. result = JSON.parse(@response.body)
  86. assert_equal(Hash, result.class)
  87. assert_equal('Overview2', result['name'])
  88. assert_equal('my_overview', result['link'])
  89. post '/api/v1/overviews', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  90. assert_response(201)
  91. result = JSON.parse(@response.body)
  92. assert_equal(Hash, result.class)
  93. assert_equal('Overview2', result['name'])
  94. assert_equal('my_overview_1', result['link'])
  95. end
  96. test 'set mass prio' do
  97. overview1 = Overview.create!(
  98. name: 'Overview1',
  99. link: 'my_overview',
  100. condition: {
  101. 'ticket.state_id' => {
  102. operator: 'is',
  103. value: [1, 2, 3],
  104. },
  105. },
  106. order: {
  107. by: 'created_at',
  108. direction: 'DESC',
  109. },
  110. view: {
  111. d: %w[title customer state created_at],
  112. s: %w[number title customer state created_at],
  113. m: %w[number title customer state created_at],
  114. view_mode_default: 's',
  115. },
  116. prio: 1,
  117. updated_by_id: 1,
  118. created_by_id: 1,
  119. )
  120. overview2 = Overview.create!(
  121. name: 'Overview2',
  122. link: 'my_overview',
  123. condition: {
  124. 'ticket.state_id' => {
  125. operator: 'is',
  126. value: [1, 2, 3],
  127. },
  128. },
  129. order: {
  130. by: 'created_at',
  131. direction: 'DESC',
  132. },
  133. view: {
  134. d: %w[title customer state created_at],
  135. s: %w[number title customer state created_at],
  136. m: %w[number title customer state created_at],
  137. view_mode_default: 's',
  138. },
  139. prio: 2,
  140. updated_by_id: 1,
  141. created_by_id: 1,
  142. )
  143. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('tickets-admin', 'adminpw')
  144. params = {
  145. prios: [
  146. [overview2.id, 1],
  147. [overview1.id, 2],
  148. ]
  149. }
  150. post '/api/v1/overviews_prio', params: params.to_json, headers: @headers.merge('Authorization' => credentials)
  151. assert_response(200)
  152. result = JSON.parse(@response.body)
  153. assert_equal(Hash, result.class)
  154. assert_equal(true, result['success'])
  155. overview1.reload
  156. overview2.reload
  157. assert_equal(2, overview1.prio)
  158. assert_equal(1, overview2.prio)
  159. end
  160. end