test_admin_command.rb

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