ticket_owner_reset_on_follow_up_test.rb 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. require 'test_helper'
  2. class TicketOwnerResetOnFollowUpTest < ActiveSupport::TestCase
  3. setup do
  4. UserInfo.current_user_id = 1
  5. Group.create_or_update(
  6. name: 'Disabled Group',
  7. follow_up_possible: 'yes',
  8. follow_up_assignment: true,
  9. active: false,
  10. )
  11. groups = Group.where(name: 'Users')
  12. roles = Role.where(name: 'Agent')
  13. @agent1 = User.create_or_update(
  14. login: 'ticket-customer-organization-update-agent1@example.com',
  15. firstname: 'FollowUpCheck',
  16. lastname: 'Agent1',
  17. email: 'ticket-customer-organization-update-agent1@example.com',
  18. password: 'agentpw',
  19. active: true,
  20. roles: roles,
  21. groups: groups,
  22. )
  23. roles = Role.where(name: 'Customer')
  24. @organization1 = Organization.create_if_not_exists(
  25. name: 'Customer Organization Update',
  26. )
  27. @customer1 = User.create_or_update(
  28. login: 'ticket-customer-organization-update-customer1@example.com',
  29. firstname: 'FollowUpCheck',
  30. lastname: 'Customer1',
  31. email: 'ticket-customer-organization-update-customer1@example.com',
  32. password: 'customerpw',
  33. active: true,
  34. organization_id: @organization1.id,
  35. roles: roles,
  36. )
  37. UserInfo.current_user_id = nil
  38. end
  39. test 'create ticket, update owner to user with disabled group' do
  40. ticket = Ticket.create!(
  41. title: "some title1\n äöüß",
  42. group: Group.lookup(name: 'Users'),
  43. customer_id: @customer1.id,
  44. owner_id: @agent1.id,
  45. updated_by_id: 1,
  46. created_by_id: 1,
  47. )
  48. assert(ticket, 'ticket created')
  49. assert_equal(@customer1.id, ticket.customer.id)
  50. assert_equal(@organization1.id, ticket.organization.id)
  51. @agent1.groups = Group.where(name: 'Disabled Group')
  52. @agent1.save!
  53. ticket.owner = @agent1
  54. ticket.save!
  55. ticket.reload
  56. assert_equal('-', ticket.owner.login) # reassigned to default agent
  57. end
  58. test 'create ticket, update owner to user which is inactive' do
  59. ticket = Ticket.create!(
  60. title: "some title1\n äöüß",
  61. group: Group.lookup(name: 'Users'),
  62. customer_id: @customer1.id,
  63. owner_id: @agent1.id,
  64. updated_by_id: 1,
  65. created_by_id: 1,
  66. )
  67. assert(ticket, 'ticket created')
  68. assert_equal(@customer1.id, ticket.customer.id)
  69. assert_equal(@organization1.id, ticket.organization.id)
  70. @agent1.active = false
  71. @agent1.save!
  72. ticket.owner = @agent1
  73. ticket.save!
  74. ticket.reload
  75. assert_equal('-', ticket.owner.login) # reassigned to default agent
  76. end
  77. test 'create ticket, update owner to user which active and is in active group' do
  78. ticket = Ticket.create!(
  79. title: "some title1\n äöüß",
  80. group: Group.lookup(name: 'Users'),
  81. customer_id: @customer1.id,
  82. owner_id: @agent1.id,
  83. updated_by_id: 1,
  84. created_by_id: 1,
  85. )
  86. assert(ticket, 'ticket created')
  87. assert_equal(@customer1.id, ticket.customer.id)
  88. assert_equal(@organization1.id, ticket.organization.id)
  89. ticket.owner = @agent1
  90. ticket.save!
  91. ticket.reload
  92. assert_equal(ticket.owner.login, 'ticket-customer-organization-update-agent1@example.com') # should not be reassigned
  93. end
  94. test 'check if ticket is unassigned on follow up via model if owner in a group is inactive' do
  95. ticket = Ticket.create!(
  96. title: 'follow up check for invalid owner',
  97. group: Group.lookup(name: 'Users'),
  98. customer: @customer1,
  99. owner: @agent1,
  100. state: Ticket::State.lookup(name: 'closed'),
  101. updated_by_id: 1,
  102. created_by_id: 1,
  103. )
  104. article = Ticket::Article.create!(
  105. ticket_id: ticket.id,
  106. from: 'some_sender@example.com',
  107. to: 'some_recipient@example.com',
  108. subject: 'follow up check',
  109. body: 'some message article',
  110. internal: false,
  111. sender: Ticket::Article::Sender.lookup(name: 'Agent'),
  112. type: Ticket::Article::Type.lookup(name: 'email'),
  113. updated_by_id: 1,
  114. created_by_id: 1,
  115. )
  116. @agent1.groups = Group.where(name: 'Disabled Group')
  117. @agent1.save!
  118. email_raw = "From: me@example.com
  119. To: customer@example.com
  120. Subject: #{ticket.subject_build('some new subject')}
  121. Some Text"
  122. ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, email_raw)
  123. assert_equal(ticket.id, ticket_p.id)
  124. assert_equal('open', ticket_p.state.name)
  125. assert_equal('-', ticket_p.owner.login)
  126. end
  127. test 'check if ticket is unassigned on follow up via email if current owner is inactive' do
  128. ticket = Ticket.create!(
  129. title: 'follow up check for invalid owner',
  130. group: Group.lookup(name: 'Users'),
  131. customer: @customer1,
  132. owner: @agent1,
  133. state: Ticket::State.lookup(name: 'closed'),
  134. updated_by_id: 1,
  135. created_by_id: 1,
  136. )
  137. article = Ticket::Article.create!(
  138. ticket_id: ticket.id,
  139. from: 'some_sender@example.com',
  140. to: 'some_recipient@example.com',
  141. subject: 'follow up check',
  142. body: 'some message article',
  143. internal: false,
  144. sender: Ticket::Article::Sender.lookup(name: 'Agent'),
  145. type: Ticket::Article::Type.lookup(name: 'email'),
  146. updated_by_id: 1,
  147. created_by_id: 1,
  148. )
  149. @agent1.active = false
  150. @agent1.save!
  151. email_raw = "From: me@example.com
  152. To: customer@example.com
  153. Subject: #{ticket.subject_build('some new subject')}
  154. Some Text"
  155. ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, email_raw)
  156. assert_equal(ticket.id, ticket_p.id)
  157. assert_equal('open', ticket_p.state.name)
  158. assert_equal('-', ticket_p.owner.login)
  159. end
  160. test 'check if ticket is unassigned on follow up via email if current owner is customer now' do
  161. ticket = Ticket.create!(
  162. title: 'follow up check for invalid owner is customer now',
  163. group: Group.lookup(name: 'Users'),
  164. customer: @customer1,
  165. owner: @agent1,
  166. state: Ticket::State.lookup(name: 'closed'),
  167. updated_by_id: 1,
  168. created_by_id: 1,
  169. )
  170. article = Ticket::Article.create!(
  171. ticket_id: ticket.id,
  172. from: 'some_sender@example.com',
  173. to: 'some_recipient@example.com',
  174. subject: 'follow up check',
  175. body: 'some message article',
  176. internal: false,
  177. sender: Ticket::Article::Sender.lookup(name: 'Agent'),
  178. type: Ticket::Article::Type.lookup(name: 'email'),
  179. updated_by_id: 1,
  180. created_by_id: 1,
  181. )
  182. @agent1.roles = Role.where(name: 'Customer')
  183. @agent1.save!
  184. email_raw = "From: me@example.com
  185. To: customer@example.com
  186. Subject: #{ticket.subject_build('some new subject')}
  187. Some Text"
  188. ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, email_raw)
  189. assert_equal(ticket.id, ticket_p.id)
  190. assert_equal('open', ticket_p.state.name)
  191. assert_equal('-', ticket_p.owner.login)
  192. end
  193. end