otrs_import_test.rb 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. # encoding: utf-8
  2. require 'integration_test_helper'
  3. class OtrsImportTest < ActiveSupport::TestCase
  4. if !ENV['IMPORT_OTRS_ENDPOINT']
  5. fail "ERROR: Need IMPORT_OTRS_ENDPOINT - hint IMPORT_OTRS_ENDPOINT='http://vz305.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator'"
  6. end
  7. if !ENV['IMPORT_OTRS_ENDPOINT_KEY']
  8. fail "ERROR: Need IMPORT_OTRS_ENDPOINT_KEY - hint IMPORT_OTRS_ENDPOINT_KEY='01234567899876543210'"
  9. end
  10. Setting.set('import_otrs_endpoint', ENV['IMPORT_OTRS_ENDPOINT'])
  11. Setting.set('import_otrs_endpoint_key', ENV['IMPORT_OTRS_ENDPOINT_KEY'])
  12. Setting.set('import_mode', true)
  13. Import::OTRS.start
  14. # check settings items
  15. test 'check settings' do
  16. http = nil
  17. system_id = nil
  18. fqdn = nil
  19. if ENV['IMPORT_OTRS_ENDPOINT'] =~ %r{^(http|https)://((.+?)\..+?)/}
  20. http = $1
  21. fqdn = $2
  22. system_id = $3
  23. system_id.gsub!(/[A-z]/, '') # strip chars
  24. end
  25. assert_equal( system_id, Setting.get('system_id'), 'system_id' )
  26. assert_equal( fqdn, Setting.get('fqdn'), 'fqdn' )
  27. assert_equal( http, Setting.get('http_type'), 'http_type' )
  28. assert_equal( 'Example Company', Setting.get('organization'), 'organization' )
  29. end
  30. # check count of imported items
  31. test 'check counts' do
  32. assert_equal( 603, Ticket.count, 'tickets' )
  33. assert_equal( 3182, Ticket::Article.count, 'ticket articles' )
  34. assert_equal( 10, Ticket::State.count, 'ticket states' )
  35. assert_equal( 24, Group.count, 'groups' )
  36. end
  37. # check imported users and permission
  38. test 'check users' do
  39. role_admin = Role.where( name: 'Admin' ).first
  40. role_agent = Role.where( name: 'Agent' ).first
  41. role_customer = Role.where( name: 'Customer' ).first
  42. #role_report = Role.where( :name => 'Report' ).first
  43. user1 = User.find(2)
  44. assert_equal( 'agent-1 firstname', user1.firstname )
  45. assert_equal( 'agent-1 lastname', user1.lastname )
  46. assert_equal( 'agent-1', user1.login )
  47. assert_equal( 'agent-1@example.com', user1.email )
  48. assert_equal( true, user1.active )
  49. assert( user1.roles.include?( role_agent ) )
  50. assert( !user1.roles.include?( role_admin ) )
  51. assert( !user1.roles.include?( role_customer ) )
  52. #assert( !user1.roles.include?( role_report ) )
  53. group_dasa = Group.where( name: 'dasa' ).first
  54. group_raw = Group.where( name: 'Raw' ).first
  55. assert( !user1.groups.include?( group_dasa ) )
  56. assert( user1.groups.include?( group_raw ) )
  57. user2 = User.find(3)
  58. assert_equal( 'agent-2 firstname äöüß', user2.firstname )
  59. assert_equal( 'agent-2 lastname äöüß', user2.lastname )
  60. assert_equal( 'agent-2', user2.login )
  61. assert_equal( 'agent-2@example.com', user2.email )
  62. assert_equal( true, user2.active )
  63. assert( user2.roles.include?( role_agent ) )
  64. assert( user2.roles.include?( role_admin ) )
  65. assert( !user2.roles.include?( role_customer ) )
  66. #assert( user2.roles.include?( role_report ) )
  67. assert( user2.groups.include?( group_dasa ) )
  68. assert( user2.groups.include?( group_raw ) )
  69. user3 = User.find(7)
  70. assert_equal( 'invalid', user3.firstname )
  71. assert_equal( 'invalid', user3.lastname )
  72. assert_equal( 'invalid', user3.login )
  73. assert_equal( 'invalid@example.com', user3.email )
  74. assert_equal( false, user3.active )
  75. assert( user3.roles.include?( role_agent ) )
  76. assert( !user3.roles.include?( role_admin ) )
  77. assert( !user3.roles.include?( role_customer ) )
  78. #assert( user3.roles.include?( role_report ) )
  79. assert( !user3.groups.include?( group_dasa ) )
  80. assert( !user3.groups.include?( group_raw ) )
  81. user4 = User.find(8)
  82. assert_equal( 'invalid-temp', user4.firstname )
  83. assert_equal( 'invalid-temp', user4.lastname )
  84. assert_equal( 'invalid-temp', user4.login )
  85. assert_equal( 'invalid-temp@example.com', user4.email )
  86. assert_equal( false, user4.active )
  87. assert( user4.roles.include?( role_agent ) )
  88. assert( !user4.roles.include?( role_admin ) )
  89. assert( !user4.roles.include?( role_customer ) )
  90. #assert( user4.roles.include?( role_report ) )
  91. assert( !user4.groups.include?( group_dasa ) )
  92. assert( !user4.groups.include?( group_raw ) )
  93. end
  94. # check all synced states and state types
  95. test 'check ticket stats' do
  96. state = Ticket::State.find(1)
  97. assert_equal( 'new', state.name )
  98. assert_equal( 'new', state.state_type.name )
  99. state = Ticket::State.find(2)
  100. assert_equal( 'closed successful', state.name )
  101. assert_equal( 'closed', state.state_type.name )
  102. state = Ticket::State.find(6)
  103. assert_equal( 'pending reminder', state.name )
  104. assert_equal( 'pending reminder', state.state_type.name )
  105. end
  106. # check groups/queues
  107. test 'check groups' do
  108. group1 = Group.find(1)
  109. assert_equal( 'Postmaster', group1.name )
  110. assert_equal( true, group1.active )
  111. group2 = Group.find(19)
  112. assert_equal( 'UnitTestQueue20668', group2.name )
  113. assert_equal( false, group2.active )
  114. end
  115. # check imported customers and organization relation
  116. test 'check customers / organizations' do
  117. user1 = User.where( login: 'jn' ).first
  118. assert_equal( 'Johannes', user1.firstname )
  119. assert_equal( 'Nickel', user1.lastname )
  120. assert_equal( 'jn', user1.login )
  121. assert_equal( 'jn@example.com', user1.email )
  122. organization1 = user1.organization
  123. assert_equal( 'Znuny GmbH Berlin', organization1.name )
  124. assert_equal( 'äöüß', organization1.note )
  125. user2 = User.where( login: 'test90133' ).first
  126. assert_equal( 'test90133', user2.firstname )
  127. assert_equal( 'test90133', user2.lastname )
  128. assert_equal( 'test90133', user2.login )
  129. assert_equal( 'qa4711@t-online.de', user2.email )
  130. organization2 = user2.organization
  131. assert( organization2, nil )
  132. end
  133. # check imported tickets
  134. test 'check tickets' do
  135. # ticket is open
  136. ticket = Ticket.find(728)
  137. assert_equal( 'test #1', ticket.title )
  138. assert_equal( 'open', ticket.state.name )
  139. assert_equal( 'Misc', ticket.group.name )
  140. assert_equal( '4 high', ticket.priority.name )
  141. assert_equal( 'agent-2', ticket.owner.login )
  142. assert_equal( 'partner', ticket.customer.login )
  143. assert_equal( 'Partner der betreut', ticket.organization.name )
  144. assert_equal( Time.zone.parse('2014-11-20 22:33:41 +0000').gmtime.to_s, ticket.created_at.to_s )
  145. assert_equal( nil, ticket.close_time )
  146. # check history
  147. # - create entry
  148. # ticket is created with state closed
  149. ticket = Ticket.find(729)
  150. assert_equal( 'test #2', ticket.title )
  151. assert_equal( 'closed successful', ticket.state.name )
  152. assert_equal( 'Raw', ticket.group.name )
  153. assert_equal( '3 normal', ticket.priority.name )
  154. assert_equal( 'agent-2', ticket.owner.login )
  155. assert_equal( 'jn2', ticket.customer.login )
  156. assert_equal( 'Znuny GmbH', ticket.organization.name )
  157. assert_equal( Time.zone.parse('2014-11-20 23:24:20 +0000').gmtime.to_s, ticket.created_at.to_s )
  158. assert_equal( Time.zone.parse('2014-11-20 23:24:20 +0000').gmtime.to_s, ticket.close_time.to_s )
  159. # check history
  160. # - create entry
  161. # ticket is created open and now closed
  162. ticket = Ticket.find(730)
  163. assert_equal( 'test #3', ticket.title )
  164. assert_equal( 'closed successful', ticket.state.name )
  165. assert_equal( 'Postmaster', ticket.group.name )
  166. assert_equal( '3 normal', ticket.priority.name )
  167. assert_equal( 'agent-2', ticket.owner.login )
  168. assert_equal( 'betreuterkunde2', ticket.customer.login )
  169. assert_equal( 'Noch ein betreuter Kunde', ticket.organization.name )
  170. assert_equal( Time.zone.parse('2014-11-21 00:17:40 +0000').gmtime.to_s, ticket.created_at.to_s )
  171. assert_equal( Time.zone.parse('2014-11-21 00:21:08 +0000').gmtime.to_s, ticket.close_time.to_s )
  172. # check history
  173. # - create entry
  174. # - state change entry
  175. end
  176. end