chat_test.rb 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. require 'test_helper'
  3. class ChatTest < ActiveSupport::TestCase
  4. setup do
  5. groups = Group.all
  6. roles = Role.where(name: %w[Agent])
  7. @agent1 = User.create!(
  8. login: 'ticket-chat-agent1@example.com',
  9. firstname: 'Notification',
  10. lastname: 'Agent1',
  11. email: 'ticket-chat-agent1@example.com',
  12. password: 'agentpw',
  13. active: true,
  14. roles: roles,
  15. groups: groups,
  16. updated_at: '2015-02-05 16:37:00',
  17. updated_by_id: 1,
  18. created_by_id: 1,
  19. )
  20. @agent2 = User.create!(
  21. login: 'ticket-chat-agent2@example.com',
  22. firstname: 'Notification',
  23. lastname: 'Agent2',
  24. email: 'ticket-chat-agent2@example.com',
  25. password: 'agentpw',
  26. active: true,
  27. roles: roles,
  28. groups: groups,
  29. updated_at: '2015-02-05 16:38:00',
  30. updated_by_id: 1,
  31. created_by_id: 1,
  32. )
  33. Chat.delete_all
  34. Chat::Session.delete_all
  35. Chat::Message.delete_all
  36. Chat::Agent.delete_all
  37. Setting.set('chat', false)
  38. end
  39. test 'instance_variable test' do
  40. assert_nil(Sessions::Event::Base.instance_variable_get(:@database_connection))
  41. assert_equal(Sessions::Event::ChatBase.instance_variable_get(:@database_connection), true)
  42. assert_equal(Sessions::Event::ChatStatusAgent.instance_variable_get(:@database_connection), true)
  43. end
  44. # check if db connection is available for chat events
  45. # see: https://github.com/zammad/zammad/issues/2353
  46. test 'chat event db connection test' do
  47. skip "Can't properly disconnect while Spring is in use." if defined?(Spring)
  48. class DummyWs # rubocop:disable Lint/ConstantDefinitionInBlock
  49. def send(msg)
  50. Rails.logger.info "WS send: #{msg}"
  51. end
  52. end
  53. # with websockets
  54. assert(User.first)
  55. # make sure to emulate unconnected WS env
  56. ActiveRecord::Base.remove_connection
  57. message = Sessions::Event.run(
  58. event: 'login',
  59. payload: {},
  60. session: 123,
  61. remote_ip: '127.0.0.1',
  62. client_id: '123',
  63. clients: {
  64. '123' => {
  65. websocket: DummyWs.new # to simulate a ws connection
  66. }
  67. },
  68. options: {},
  69. )
  70. assert_equal(message, false)
  71. assert_raises(ActiveRecord::ConnectionNotEstablished) do
  72. User.first
  73. end
  74. message = Sessions::Event.run(
  75. event: 'chat_status_customer',
  76. payload: {},
  77. session: 123,
  78. remote_ip: '127.0.0.1',
  79. client_id: '123',
  80. clients: {
  81. '123' => DummyWs.new # to simulate a ws connection
  82. },
  83. options: {},
  84. )
  85. assert_equal(message[:event], 'chat_error')
  86. assert_raises(ActiveRecord::ConnectionNotEstablished) do
  87. User.first
  88. end
  89. # re-establish connection
  90. ActiveRecord::Base.establish_connection
  91. # with ajax long polling
  92. assert(User.first)
  93. message = Sessions::Event.run(
  94. event: 'login',
  95. payload: {},
  96. session: 123,
  97. remote_ip: '127.0.0.1',
  98. client_id: '123',
  99. clients: {},
  100. options: {},
  101. )
  102. assert_equal(message, false)
  103. assert(User.first)
  104. message = Sessions::Event.run(
  105. event: 'chat_status_customer',
  106. payload: {},
  107. session: 123,
  108. remote_ip: '127.0.0.1',
  109. client_id: '123',
  110. clients: {},
  111. options: {},
  112. )
  113. assert_equal(message[:event], 'chat_error')
  114. assert(User.first)
  115. end
  116. test 'default test' do
  117. chat = Chat.create!(
  118. name: 'default',
  119. max_queue: 5,
  120. note: '',
  121. active: true,
  122. updated_by_id: 1,
  123. created_by_id: 1,
  124. )
  125. @agent1.preferences[:chat] = {
  126. active: {
  127. chat.id => 'on',
  128. },
  129. }
  130. @agent1.save!
  131. @agent2.preferences[:chat] = {
  132. active: {
  133. chat.id => 'on',
  134. },
  135. }
  136. @agent2.save!
  137. # check if feature is disabled
  138. assert_equal('chat_disabled', chat.customer_state[:state])
  139. assert_equal('chat_disabled', Chat.agent_state(@agent1.id)[:state])
  140. Setting.set('chat', true)
  141. # check customer state
  142. assert_equal('offline', chat.customer_state[:state])
  143. # check agent state
  144. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  145. assert_equal(0, agent_state[:waiting_chat_count])
  146. assert_equal(0, agent_state[:running_chat_count])
  147. assert_equal([], agent_state[:active_sessions])
  148. assert_equal(0, agent_state[:seads_available])
  149. assert_equal(0, agent_state[:seads_total])
  150. assert_equal(false, agent_state[:active])
  151. # set agent 1 to active
  152. Chat::Agent.create_or_update(
  153. active: true,
  154. concurrent: 4,
  155. updated_by_id: @agent1.id,
  156. created_by_id: @agent1.id,
  157. )
  158. # check customer state
  159. assert_equal('online', chat.customer_state[:state])
  160. # check agent state
  161. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  162. assert_equal(0, agent_state[:waiting_chat_count])
  163. assert_equal(0, agent_state[:running_chat_count])
  164. assert_equal([], agent_state[:active_sessions])
  165. assert_equal(4, agent_state[:seads_available])
  166. assert_equal(4, agent_state[:seads_total])
  167. assert_equal(true, agent_state[:active])
  168. # start session
  169. chat_session1 = Chat::Session.create!(
  170. chat_id: chat.id,
  171. user_id: @agent1.id,
  172. )
  173. assert(chat_session1.session_id)
  174. # check customer state
  175. assert_equal('online', chat.customer_state[:state])
  176. # check agent state
  177. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  178. assert_equal(1, agent_state[:waiting_chat_count])
  179. assert_equal(0, agent_state[:running_chat_count])
  180. assert_equal([], agent_state[:active_sessions])
  181. assert_equal(3, agent_state[:seads_available])
  182. assert_equal(4, agent_state[:seads_total])
  183. assert_equal(true, agent_state[:active])
  184. # activate second agent
  185. chat_agent2 = Chat::Agent.create!(
  186. active: true,
  187. concurrent: 2,
  188. updated_by_id: @agent2.id,
  189. created_by_id: @agent2.id,
  190. )
  191. # check customer state
  192. assert_equal('online', chat.customer_state[:state])
  193. # check agent1 state
  194. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  195. assert_equal(1, agent_state[:waiting_chat_count])
  196. assert_equal(0, agent_state[:running_chat_count])
  197. assert_equal([], agent_state[:active_sessions])
  198. assert_equal(5, agent_state[:seads_available])
  199. assert_equal(6, agent_state[:seads_total])
  200. assert_equal(true, agent_state[:active])
  201. # check agent2 state
  202. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  203. assert_equal(1, agent_state[:waiting_chat_count])
  204. assert_equal(0, agent_state[:running_chat_count])
  205. assert_equal([], agent_state[:active_sessions])
  206. assert_equal(5, agent_state[:seads_available])
  207. assert_equal(6, agent_state[:seads_total])
  208. assert_equal(true, agent_state[:active])
  209. # start next chat
  210. Chat::Session.create(
  211. chat_id: chat.id,
  212. )
  213. # check customer state
  214. assert_equal('online', chat.customer_state[:state])
  215. # check agent1 state
  216. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  217. assert_equal(2, agent_state[:waiting_chat_count])
  218. assert_equal(0, agent_state[:running_chat_count])
  219. assert_equal([], agent_state[:active_sessions])
  220. assert_equal(4, agent_state[:seads_available])
  221. assert_equal(6, agent_state[:seads_total])
  222. assert_equal(true, agent_state[:active])
  223. # check agent2 state
  224. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  225. assert_equal(2, agent_state[:waiting_chat_count])
  226. assert_equal(0, agent_state[:running_chat_count])
  227. assert_equal([], agent_state[:active_sessions])
  228. assert_equal(4, agent_state[:seads_available])
  229. assert_equal(6, agent_state[:seads_total])
  230. assert_equal(true, agent_state[:active])
  231. # start new chats
  232. Chat::Session.create(
  233. chat_id: chat.id,
  234. )
  235. chat_session4 = Chat::Session.create!(
  236. chat_id: chat.id,
  237. )
  238. chat_session5 = Chat::Session.create!(
  239. chat_id: chat.id,
  240. )
  241. chat_session6 = Chat::Session.create!(
  242. chat_id: chat.id,
  243. )
  244. # check customer state
  245. assert_equal('no_seats_available', chat.customer_state[:state])
  246. # check agent1 state
  247. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  248. assert_equal(6, agent_state[:waiting_chat_count])
  249. assert_equal(0, agent_state[:running_chat_count])
  250. assert_equal([], agent_state[:active_sessions])
  251. assert_equal(0, agent_state[:seads_available])
  252. assert_equal(6, agent_state[:seads_total])
  253. assert_equal(true, agent_state[:active])
  254. # check agent2 state
  255. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  256. assert_equal(6, agent_state[:waiting_chat_count])
  257. assert_equal(0, agent_state[:running_chat_count])
  258. assert_equal([], agent_state[:active_sessions])
  259. assert_equal(0, agent_state[:seads_available])
  260. assert_equal(6, agent_state[:seads_total])
  261. assert_equal(true, agent_state[:active])
  262. chat_session6.user_id = @agent1.id
  263. chat_session6.state = 'running'
  264. chat_session6.save
  265. Chat::Message.create!(
  266. chat_session_id: chat_session6.id,
  267. content: 'message 1',
  268. created_by_id: @agent1.id,
  269. )
  270. travel 1.second
  271. Chat::Message.create!(
  272. chat_session_id: chat_session6.id,
  273. content: 'message 2',
  274. created_by_id: @agent1.id,
  275. )
  276. travel 1.second
  277. Chat::Message.create!(
  278. chat_session_id: chat_session6.id,
  279. content: 'message 3',
  280. created_by_id: @agent1.id,
  281. )
  282. travel 1.second
  283. Chat::Message.create!(
  284. chat_session_id: chat_session6.id,
  285. content: 'message 4',
  286. created_by_id: nil,
  287. )
  288. # check customer state
  289. customer_state = chat.customer_state
  290. assert_equal('no_seats_available', customer_state[:state])
  291. assert_equal(5, customer_state[:queue])
  292. # customer chat state
  293. customer_state = chat.customer_state(chat_session6.session_id)
  294. assert_equal('reconnect', customer_state[:state])
  295. assert(customer_state[:session])
  296. assert_equal(Array, customer_state[:session].class)
  297. assert_equal('message 1', customer_state[:session][0]['content'])
  298. assert_equal('message 2', customer_state[:session][1]['content'])
  299. assert_equal('message 3', customer_state[:session][2]['content'])
  300. assert_equal('message 4', customer_state[:session][3]['content'])
  301. assert_equal('Notification Agent1', customer_state[:agent][:name])
  302. assert_nil(customer_state[:agent][:avatar])
  303. # check agent1 state
  304. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  305. assert_equal(5, agent_state[:waiting_chat_count])
  306. assert_equal(1, agent_state[:running_chat_count])
  307. assert_equal(Array, agent_state[:active_sessions].class)
  308. assert_equal(chat.id, agent_state[:active_sessions][0]['chat_id'])
  309. assert_equal(@agent1.id, agent_state[:active_sessions][0]['user_id'])
  310. assert(agent_state[:active_sessions][0]['messages'])
  311. assert_equal(Array, agent_state[:active_sessions][0]['messages'].class)
  312. assert_equal('message 1', agent_state[:active_sessions][0]['messages'][0]['content'])
  313. assert_equal('message 2', agent_state[:active_sessions][0]['messages'][1]['content'])
  314. assert_equal('message 3', agent_state[:active_sessions][0]['messages'][2]['content'])
  315. assert_equal('message 4', agent_state[:active_sessions][0]['messages'][3]['content'])
  316. assert_equal(0, agent_state[:seads_available])
  317. assert_equal(6, agent_state[:seads_total])
  318. assert_equal(true, agent_state[:active])
  319. # check agent2 state
  320. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  321. assert_equal(5, agent_state[:waiting_chat_count])
  322. assert_equal(1, agent_state[:running_chat_count])
  323. assert_equal([], agent_state[:active_sessions])
  324. assert_equal(0, agent_state[:seads_available])
  325. assert_equal(6, agent_state[:seads_total])
  326. assert_equal(true, agent_state[:active])
  327. chat_agent2.active = false
  328. chat_agent2.save
  329. # check customer state
  330. assert_equal('no_seats_available', chat.customer_state[:state])
  331. assert_equal(5, chat.customer_state[:queue])
  332. # check agent1 state
  333. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  334. assert_equal(5, agent_state[:waiting_chat_count])
  335. assert_equal(1, agent_state[:running_chat_count])
  336. assert_equal(Array, agent_state[:active_sessions].class)
  337. assert_equal(chat.id, agent_state[:active_sessions][0]['chat_id'])
  338. assert_equal(@agent1.id, agent_state[:active_sessions][0]['user_id'])
  339. assert(agent_state[:active_sessions][0]['messages'])
  340. assert_equal(Array, agent_state[:active_sessions][0]['messages'].class)
  341. assert_equal('message 1', agent_state[:active_sessions][0]['messages'][0]['content'])
  342. assert_equal('message 2', agent_state[:active_sessions][0]['messages'][1]['content'])
  343. assert_equal('message 3', agent_state[:active_sessions][0]['messages'][2]['content'])
  344. assert_equal('message 4', agent_state[:active_sessions][0]['messages'][3]['content'])
  345. assert_equal(-2, agent_state[:seads_available])
  346. assert_equal(4, agent_state[:seads_total])
  347. assert_equal(true, agent_state[:active])
  348. # check agent2 state
  349. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  350. assert_equal(5, agent_state[:waiting_chat_count])
  351. assert_equal(1, agent_state[:running_chat_count])
  352. assert_equal([], agent_state[:active_sessions])
  353. assert_equal(-2, agent_state[:seads_available])
  354. assert_equal(4, agent_state[:seads_total])
  355. assert_equal(false, agent_state[:active])
  356. chat_session6.state = 'closed'
  357. chat_session6.save
  358. # check customer state
  359. assert_equal('no_seats_available', chat.customer_state[:state])
  360. assert_equal(5, chat.customer_state[:queue])
  361. # check agent1 state
  362. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  363. assert_equal(5, agent_state[:waiting_chat_count])
  364. assert_equal(0, agent_state[:running_chat_count])
  365. assert_equal([], agent_state[:active_sessions])
  366. assert_equal(-1, agent_state[:seads_available])
  367. assert_equal(4, agent_state[:seads_total])
  368. assert_equal(true, agent_state[:active])
  369. # check agent2 state
  370. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  371. assert_equal(5, agent_state[:waiting_chat_count])
  372. assert_equal(0, agent_state[:running_chat_count])
  373. assert_equal([], agent_state[:active_sessions])
  374. assert_equal(-1, agent_state[:seads_available])
  375. assert_equal(4, agent_state[:seads_total])
  376. assert_equal(false, agent_state[:active])
  377. chat_session5.destroy
  378. chat_session4.destroy
  379. # check customer state
  380. assert_equal('online', chat.customer_state[:state])
  381. # check agent1 state
  382. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  383. assert_equal(3, agent_state[:waiting_chat_count])
  384. assert_equal(0, agent_state[:running_chat_count])
  385. assert_equal([], agent_state[:active_sessions])
  386. assert_equal(1, agent_state[:seads_available])
  387. assert_equal(4, agent_state[:seads_total])
  388. assert_equal(true, agent_state[:active])
  389. # check agent2 state
  390. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  391. assert_equal(3, agent_state[:waiting_chat_count])
  392. assert_equal(0, agent_state[:running_chat_count])
  393. assert_equal([], agent_state[:active_sessions])
  394. assert_equal(1, agent_state[:seads_available])
  395. assert_equal(4, agent_state[:seads_total])
  396. assert_equal(false, agent_state[:active])
  397. travel_back
  398. end
  399. test 'check if agent_state_with_sessions works correctly with 2 chats' do
  400. chat1 = Chat.create!(
  401. name: 'topic 1',
  402. max_queue: 5,
  403. note: '',
  404. active: true,
  405. updated_by_id: 1,
  406. created_by_id: 1,
  407. )
  408. chat2 = Chat.create!(
  409. name: 'topic 2',
  410. max_queue: 5,
  411. note: '',
  412. active: true,
  413. updated_by_id: 1,
  414. created_by_id: 1,
  415. )
  416. @agent1.preferences[:chat] = {
  417. active: {
  418. chat1.id.to_s => 'on',
  419. },
  420. }
  421. @agent1.save!
  422. @agent2.preferences[:chat] = {
  423. active: {
  424. chat2.id.to_s => 'on',
  425. },
  426. }
  427. @agent2.save!
  428. Setting.set('chat', true)
  429. # check customer state
  430. assert_equal('offline', chat1.customer_state[:state])
  431. assert_equal('offline', chat2.customer_state[:state])
  432. # check agent state
  433. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  434. assert_equal(0, agent_state[:waiting_chat_count])
  435. assert_equal(0, agent_state[:running_chat_count])
  436. assert_equal([], agent_state[:active_sessions])
  437. assert_equal(0, agent_state[:seads_available])
  438. assert_equal(0, agent_state[:seads_total])
  439. assert_equal(false, agent_state[:active])
  440. # set agent 1 to active
  441. Chat::Agent.create!(
  442. active: true,
  443. concurrent: 4,
  444. updated_by_id: @agent1.id,
  445. created_by_id: @agent1.id,
  446. )
  447. # check customer state
  448. assert_equal('online', chat1.customer_state[:state])
  449. assert_equal('offline', chat2.customer_state[:state])
  450. # check agent state
  451. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  452. assert_equal(0, agent_state[:waiting_chat_count])
  453. assert_equal(0, agent_state[:running_chat_count])
  454. assert_equal([], agent_state[:active_sessions])
  455. assert_equal(0, agent_state[:seads_available])
  456. assert_equal(0, agent_state[:seads_total])
  457. assert_equal(false, agent_state[:active])
  458. # set agent 2 to active
  459. Chat::Agent.create!(
  460. active: true,
  461. concurrent: 2,
  462. updated_by_id: @agent2.id,
  463. created_by_id: @agent2.id,
  464. )
  465. # check customer state
  466. assert_equal('online', chat1.customer_state[:state])
  467. assert_equal('online', chat2.customer_state[:state])
  468. # start session
  469. chat_session1 = Chat::Session.create!(
  470. chat_id: chat1.id,
  471. user_id: @agent1.id,
  472. )
  473. assert(chat_session1.session_id)
  474. # check agent1 state
  475. agent_state = Chat.agent_state_with_sessions(@agent1.id)
  476. assert_equal(1, agent_state[:waiting_chat_count])
  477. assert_equal(0, agent_state[:running_chat_count])
  478. assert_equal([], agent_state[:active_sessions])
  479. assert_equal(3, agent_state[:seads_available])
  480. assert_equal(4, agent_state[:seads_total])
  481. assert_equal(true, agent_state[:active])
  482. # check agent2 state
  483. agent_state = Chat.agent_state_with_sessions(@agent2.id)
  484. assert_equal(0, agent_state[:waiting_chat_count])
  485. assert_equal(0, agent_state[:running_chat_count])
  486. assert_equal([], agent_state[:active_sessions])
  487. assert_equal(2, agent_state[:seads_available])
  488. assert_equal(2, agent_state[:seads_total])
  489. assert_equal(true, agent_state[:active])
  490. end
  491. test 'if agent_active_chat_ids works correctly' do
  492. chat1 = Chat.create!(
  493. name: 'topic 1',
  494. max_queue: 5,
  495. note: '',
  496. active: true,
  497. updated_by_id: 1,
  498. created_by_id: 1,
  499. )
  500. chat2 = Chat.create!(
  501. name: 'topic 2',
  502. max_queue: 5,
  503. note: '',
  504. active: true,
  505. updated_by_id: 1,
  506. created_by_id: 1,
  507. )
  508. assert_equal([], Chat.agent_active_chat_ids(@agent1))
  509. assert_equal([], Chat.agent_active_chat_ids(@agent2))
  510. @agent1.preferences[:chat] = {
  511. active: {
  512. chat1.id.to_s => 'on',
  513. },
  514. }
  515. @agent1.save!
  516. @agent2.preferences[:chat] = {
  517. active: {
  518. chat2.id => 'on',
  519. },
  520. }
  521. @agent2.save!
  522. assert_equal([chat1.id], Chat.agent_active_chat_ids(@agent1))
  523. assert_equal([chat2.id], Chat.agent_active_chat_ids(@agent2))
  524. @agent2.preferences[:chat] = {
  525. active: {
  526. chat2.id => 'off',
  527. },
  528. }
  529. @agent2.save!
  530. assert_equal([chat1.id], Chat.agent_active_chat_ids(@agent1))
  531. assert_equal([], Chat.agent_active_chat_ids(@agent2))
  532. end
  533. test 'blocked ip test' do
  534. chat = Chat.create!(
  535. name: 'ip test',
  536. max_queue: 5,
  537. note: '',
  538. block_ip: '127.0.0.1;127.0.0.2;127.1.0.*',
  539. active: true,
  540. updated_by_id: 1,
  541. created_by_id: 1,
  542. )
  543. assert_not(chat.blocked_ip?('128.0.0.1'))
  544. assert_not(chat.blocked_ip?('127.0.0.30'))
  545. assert(chat.blocked_ip?('127.0.0.1'))
  546. assert(chat.blocked_ip?('127.0.0.2'))
  547. assert(chat.blocked_ip?('127.1.0.1'))
  548. assert(chat.blocked_ip?('127.1.0.100'))
  549. end
  550. test 'blocked country test' do
  551. chat = Chat.create!(
  552. name: 'country test',
  553. max_queue: 5,
  554. note: '',
  555. block_country: 'AU;CH',
  556. active: true,
  557. updated_by_id: 1,
  558. created_by_id: 1,
  559. )
  560. assert_not(chat.blocked_country?('127.0.0.1'))
  561. assert(chat.blocked_country?('1.1.1.8'))
  562. end
  563. end