test_admin_command.rb

  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