cti_caller_id_test.rb 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. require 'test_helper'
  2. class CtiCallerIdTest < ActiveSupport::TestCase
  3. setup do
  4. Ticket.destroy_all
  5. Cti::CallerId.destroy_all
  6. @agent1 = User.create_or_update(
  7. login: 'ticket-caller_id-agent1@example.com',
  8. firstname: 'CallerId',
  9. lastname: 'Agent1',
  10. email: 'ticket-caller_id-agent1@example.com',
  11. password: 'agentpw',
  12. active: true,
  13. phone: '+49 1111 222222',
  14. fax: '+49 1111 222223',
  15. mobile: '+49 1111 222223',
  16. note: 'Phone at home: +49 1111 222224',
  17. updated_by_id: 1,
  18. created_by_id: 1,
  19. )
  20. @agent2 = User.create_or_update(
  21. login: 'ticket-caller_id-agent2@example.com',
  22. firstname: 'CallerId',
  23. lastname: 'Agent2',
  24. email: 'ticket-caller_id-agent2@example.com',
  25. password: 'agentpw',
  26. phone: '+49 2222 222222',
  27. note: 'Phone at home: <b>+49 2222 222224</b>',
  28. active: true,
  29. updated_by_id: 1,
  30. created_by_id: 1,
  31. )
  32. @agent3 = User.create_or_update(
  33. login: 'ticket-caller_id-agent3@example.com',
  34. firstname: 'CallerId',
  35. lastname: 'Agent3',
  36. email: 'ticket-caller_id-agent3@example.com',
  37. password: 'agentpw',
  38. phone: '+49 2222 222222',
  39. active: true,
  40. updated_by_id: 1,
  41. created_by_id: 1,
  42. )
  43. @customer1 = User.create_or_update(
  44. login: 'ticket-caller_id-customer1@example.com',
  45. firstname: 'CallerId',
  46. lastname: 'Customer1',
  47. email: 'ticket-caller_id-customer1@example.com',
  48. password: 'customerpw',
  49. active: true,
  50. updated_by_id: 1,
  51. created_by_id: 1,
  52. )
  53. end
  54. test '1 lookups' do
  55. Cti::CallerId.rebuild
  56. caller_ids = Cti::CallerId.lookup('491111222277')
  57. assert_equal(0, caller_ids.length)
  58. caller_ids = Cti::CallerId.lookup('491111222223')
  59. assert_equal(1, caller_ids.length)
  60. assert_equal(@agent1.id, caller_ids[0].user_id)
  61. assert_equal('known', caller_ids[0].level)
  62. caller_ids = Cti::CallerId.lookup('492222222222')
  63. assert_equal(2, caller_ids.length)
  64. assert_equal(@agent3.id, caller_ids[0].user_id)
  65. assert_equal('known', caller_ids[0].level)
  66. assert_equal(@agent2.id, caller_ids[1].user_id)
  67. assert_equal('known', caller_ids[1].level)
  68. # create ticket in group
  69. ticket1 = Ticket.create!(
  70. title: 'some caller id test 1',
  71. group: Group.lookup(name: 'Users'),
  72. customer: @customer1,
  73. state: Ticket::State.lookup(name: 'new'),
  74. priority: Ticket::Priority.lookup(name: '2 normal'),
  75. updated_by_id: @agent1.id,
  76. created_by_id: @agent1.id,
  77. )
  78. article1 = Ticket::Article.create!(
  79. ticket_id: ticket1.id,
  80. from: 'some_sender@example.com',
  81. to: 'some_recipient@example.com',
  82. subject: 'some subject',
  83. message_id: 'some@id',
  84. body: "some message\nFon (GEL): +49 111 366-1111 Mi-Fr
  85. Fon (LIN): +49 222 6112222 Mo-Di
  86. Mob: +49 333 8362222",
  87. internal: false,
  88. sender: Ticket::Article::Sender.where(name: 'Customer').first,
  89. type: Ticket::Article::Type.where(name: 'email').first,
  90. updated_by_id: @customer1.id,
  91. created_by_id: @customer1.id,
  92. )
  93. assert(ticket1)
  94. # create ticket in group
  95. ticket2 = Ticket.create!(
  96. title: 'some caller id test 2',
  97. group: Group.lookup(name: 'Users'),
  98. customer: @customer1,
  99. state: Ticket::State.lookup(name: 'new'),
  100. priority: Ticket::Priority.lookup(name: '2 normal'),
  101. updated_by_id: @agent1.id,
  102. created_by_id: @agent1.id,
  103. )
  104. article2 = Ticket::Article.create!(
  105. ticket_id: ticket2.id,
  106. from: 'some_sender@example.com',
  107. to: 'some_recipient@example.com',
  108. subject: 'some subject',
  109. message_id: 'some@id',
  110. body: "some message\nFon (GEL): +49 111 111-1111 Mi-Fr
  111. Fon (LIN): +49 222 1112222 Mo-Di
  112. Mob: +49 333 1112222",
  113. internal: false,
  114. sender: Ticket::Article::Sender.where(name: 'Agent').first,
  115. type: Ticket::Article::Type.where(name: 'email').first,
  116. updated_by_id: @agent1.id,
  117. created_by_id: @agent1.id,
  118. )
  119. assert(ticket2)
  120. Cti::CallerId.rebuild
  121. caller_ids = Cti::CallerId.lookup('491111222277')
  122. assert_equal(0, caller_ids.length)
  123. caller_ids = Cti::CallerId.lookup('491111222223')
  124. assert_equal(1, caller_ids.length)
  125. assert_equal(@agent1.id, caller_ids[0].user_id)
  126. assert_equal('known', caller_ids[0].level)
  127. caller_ids = Cti::CallerId.lookup('492222222222')
  128. assert_equal(2, caller_ids.length)
  129. assert_equal(@agent3.id, caller_ids[0].user_id)
  130. assert_equal('known', caller_ids[0].level)
  131. assert_equal(@agent2.id, caller_ids[1].user_id)
  132. assert_equal('known', caller_ids[1].level)
  133. caller_ids = Cti::CallerId.lookup('492226112222')
  134. assert_equal(1, caller_ids.length)
  135. assert_equal(@customer1.id, caller_ids[0].user_id)
  136. assert_equal('maybe', caller_ids[0].level)
  137. caller_ids = Cti::CallerId.lookup('492221112222')
  138. assert_equal(0, caller_ids.length)
  139. end
  140. test '2 lookups' do
  141. Cti::CallerId.destroy_all
  142. Cti::CallerId.maybe_add(
  143. caller_id: '4999999999',
  144. level: 'maybe',
  145. user_id: 2,
  146. object: 'Ticket',
  147. o_id: 2,
  148. )
  149. Cti::CallerId.maybe_add(
  150. caller_id: '4912345678901',
  151. comment: 'Hairdresser Bob Smith, San Francisco',
  152. level: 'public',
  153. user_id: 2,
  154. object: 'GoYello',
  155. o_id: 1,
  156. )
  157. caller_ids = Cti::CallerId.lookup('4912345678901')
  158. assert_equal(1, caller_ids.length)
  159. assert_equal('public', caller_ids[0].level)
  160. assert_equal(2, caller_ids[0].user_id)
  161. assert_equal('Hairdresser Bob Smith, San Francisco', caller_ids[0].comment)
  162. Cti::CallerId.maybe_add(
  163. caller_id: '4912345678901',
  164. level: 'maybe',
  165. user_id: 2,
  166. object: 'Ticket',
  167. o_id: 2,
  168. )
  169. caller_ids = Cti::CallerId.lookup('4912345678901')
  170. assert_equal(1, caller_ids.length)
  171. assert_equal('maybe', caller_ids[0].level)
  172. assert_equal(2, caller_ids[0].user_id)
  173. assert_nil(caller_ids[0].comment)
  174. Cti::CallerId.maybe_add(
  175. caller_id: '4912345678901',
  176. level: 'maybe',
  177. user_id: 2,
  178. object: 'Ticket',
  179. o_id: 2,
  180. )
  181. caller_ids = Cti::CallerId.lookup('4912345678901')
  182. assert_equal(1, caller_ids.length)
  183. assert_equal('maybe', caller_ids[0].level)
  184. assert_equal(2, caller_ids[0].user_id)
  185. assert_nil(caller_ids[0].comment)
  186. user_id = User.find_by(login: 'ticket-caller_id-customer1@example.com').id
  187. Cti::CallerId.maybe_add(
  188. caller_id: '4912345678901',
  189. level: 'maybe',
  190. user_id: user_id,
  191. object: 'Ticket',
  192. o_id: 2,
  193. )
  194. caller_ids = Cti::CallerId.lookup('4912345678901')
  195. assert_equal(2, caller_ids.length)
  196. assert_equal('maybe', caller_ids[0].level)
  197. assert_equal(user_id, caller_ids[0].user_id)
  198. assert_nil(caller_ids[0].comment)
  199. assert_equal('maybe', caller_ids[1].level)
  200. assert_equal(2, caller_ids[1].user_id)
  201. assert_nil(caller_ids[1].comment)
  202. Cti::CallerId.maybe_add(
  203. caller_id: '4912345678901',
  204. level: 'known',
  205. user_id: user_id,
  206. object: 'User',
  207. o_id: 2,
  208. )
  209. caller_ids = Cti::CallerId.lookup('4912345678901')
  210. assert_equal(1, caller_ids.length)
  211. assert_equal('known', caller_ids[0].level)
  212. assert_equal(user_id, caller_ids[0].user_id)
  213. assert_nil(caller_ids[0].comment)
  214. end
  215. test '3 process - log' do
  216. ticket1 = Ticket.create!(
  217. title: 'some caller id test 1',
  218. group: Group.lookup(name: 'Users'),
  219. customer: @customer1,
  220. state: Ticket::State.lookup(name: 'new'),
  221. priority: Ticket::Priority.lookup(name: '2 normal'),
  222. updated_by_id: @agent1.id,
  223. created_by_id: @agent1.id,
  224. )
  225. article1 = Ticket::Article.create!(
  226. ticket_id: ticket1.id,
  227. from: 'some_sender@example.com',
  228. to: 'some_recipient@example.com',
  229. subject: 'some subject',
  230. message_id: 'some@id',
  231. body: "some message\nFon (GEL): +49 111 366-1111 Mi-Fr
  232. Fon (LIN): +49 222 6112222 Mo-Di
  233. Mob: +49 333 8362222",
  234. internal: false,
  235. sender: Ticket::Article::Sender.where(name: 'Customer').first,
  236. type: Ticket::Article::Type.where(name: 'email').first,
  237. updated_by_id: @customer1.id,
  238. created_by_id: @customer1.id,
  239. )
  240. assert(ticket1)
  241. ticket2 = Ticket.create!(
  242. title: 'some caller id test 2',
  243. group: Group.lookup(name: 'Users'),
  244. customer: @customer1,
  245. state: Ticket::State.lookup(name: 'new'),
  246. priority: Ticket::Priority.lookup(name: '2 normal'),
  247. updated_by_id: @agent1.id,
  248. created_by_id: @agent1.id,
  249. )
  250. article2 = Ticket::Article.create!(
  251. ticket_id: ticket2.id,
  252. from: 'some_sender@example.com',
  253. to: 'some_recipient@example.com',
  254. subject: 'some subject',
  255. message_id: 'some@id',
  256. body: "some message\nFon (GEL): +49 111 366-1111 Mi-Fr
  257. Fon (LIN): +49 222 6112222 Mo-Di
  258. Mob: +49 333 8362222",
  259. internal: false,
  260. sender: Ticket::Article::Sender.where(name: 'Customer').first,
  261. type: Ticket::Article::Type.where(name: 'email').first,
  262. updated_by_id: @customer1.id,
  263. created_by_id: @customer1.id,
  264. )
  265. assert(ticket2)
  266. Cti::CallerId.rebuild
  267. Cti::Log.process(
  268. 'cause' => '',
  269. 'event' => 'newCall',
  270. 'user' => 'user 1',
  271. 'from' => '491113661111',
  272. 'to' => '4930600000000',
  273. 'callId' => '4991155921769858278-1',
  274. 'direction' => 'in',
  275. )
  276. log = Cti::Log.log
  277. assert(log[:list])
  278. assert(log[:assets])
  279. assert(log[:list][0])
  280. assert_not(log[:list][1])
  281. assert(log[:list][0].preferences)
  282. assert(log[:list][0].preferences[:from])
  283. assert_equal(1, log[:list][0].preferences[:from].count)
  284. assert_equal(@customer1.id, log[:list][0].preferences[:from][0][:user_id])
  285. assert_equal('maybe', log[:list][0].preferences[:from][0][:level])
  286. end
  287. end