1# frozen_string_literal: true
2
3require "test_helper"
4require "admin_command"
5
6BackendSgx::IQ_MANAGER = Minitest::Mock.new
7Customer::BLATHER = Minitest::Mock.new
8AdminActionRepo::REDIS = Minitest::Mock.new
9
10class AdminCommandTest < Minitest::Test
11 def admin_command(tel="+15556667777")
12 sgx = Minitest::Mock.new(OpenStruct.new(
13 registered?: OpenStruct.new(phone: tel)
14 ))
15 [sgx, AdminCommand.new(customer(sgx: sgx), CustomerRepo.new)]
16 end
17
18 def test_action_cancel_account
19 sgx, admin = admin_command
20
21 Customer::BLATHER.expect(
22 :<<,
23 EMPromise.resolve(nil),
24 [
25 Matching.new do |m|
26 assert_equal "Your JMP account has been cancelled.", m.body
27 assert_equal "test@example.net", m.to.to_s
28 assert_equal "notify_from@component", m.from.to_s
29 end
30 ]
31 )
32
33 Customer::BLATHER.expect(
34 :<<,
35 EMPromise.resolve(nil),
36 [
37 Matching.new do |iq|
38 assert iq.remove?
39 assert_equal "test@example.net", iq.to.to_s
40 assert_equal "component", iq.from.to_s
41 end
42 ]
43 )
44
45 sgx.expect(:deregister!, EMPromise.resolve(nil))
46
47 stub_request(
48 :post,
49 "https://dashboard.bandwidth.com/v1.0/accounts//disconnects"
50 ).with(
51 body: {
52 name: "test",
53 DisconnectTelephoneNumberOrderType: {
54 TelephoneNumberList: {
55 TelephoneNumber: "5556667777"
56 }
57 }
58 }.to_xml(indent: 0, root: "DisconnectTelephoneNumberOrder")
59 ).to_return(status: 200, body: "")
60
61 admin.action_cancel_account.sync
62
63 assert_mock sgx
64 assert_mock BackendSgx::IQ_MANAGER
65 assert_mock Customer::BLATHER
66 end
67 em :test_action_cancel_account
68
69 def test_action_cancel_account_keep_number
70 sgx, admin = admin_command("+15566667777")
71
72 Customer::BLATHER.expect(
73 :<<,
74 EMPromise.resolve(nil),
75 [
76 Matching.new do |m|
77 assert_equal "Your JMP account has been cancelled.", m.body
78 assert_equal "test@example.net", m.to.to_s
79 assert_equal "notify_from@component", m.from.to_s
80 end
81 ]
82 )
83
84 Customer::BLATHER.expect(
85 :<<,
86 EMPromise.resolve(nil),
87 [
88 Matching.new do |iq|
89 assert iq.remove?
90 assert_equal "test@example.net", iq.to.to_s
91 assert_equal "component", iq.from.to_s
92 end
93 ]
94 )
95
96 sgx.expect(:deregister!, EMPromise.resolve(nil))
97
98 stub_request(
99 :post,
100 "https://dashboard.bandwidth.com/v1.0/accounts/moveto/moveTns"
101 ).with(
102 body: {
103 CustomerOrderId: "test",
104 SourceAccountId: "test_bw_account",
105 SiteId: "movetosite",
106 SipPeerId: "movetopeer",
107 TelephoneNumbers: { TelephoneNumber: "5566667777" }
108 }.to_xml(indent: 0, root: "MoveTnsOrder")
109 ).to_return(status: 200, body: "")
110
111 admin.action_cancel_account.sync
112
113 assert_mock sgx
114 assert_mock BackendSgx::IQ_MANAGER
115 assert_mock Customer::BLATHER
116 end
117 em :test_action_cancel_account_keep_number
118end