1# frozen_string_literal: true
2
3require "test_helper"
4require_relative "../../sgx-bwmsgsv2"
5require "rantly/minitest_extensions"
6require_relative "generators/port_out_pin_cmd"
7
8def panic(e)
9 $panic = e
10end
11
12class PortOutPinPropertyTest < Minitest::Test
13 def setup
14 reset_stanzas!
15 reset_redis!
16 end
17
18 def test_execute_returns_form_for_registered_user
19 property_of {
20 PortOutPinExecuteCmd.new(REDIS).generate
21 }.check { |_metadata, example|
22 process_stanza(example['stanza'])
23
24 assert_equal 1, written.length
25 reply = written.shift
26
27 assert_equal example['jid'], reply.to.to_s
28 assert_equal :executing, reply.status
29 assert_equal 'set-port-out-pin', reply.node
30
31 vars = reply.form.fields.map(&:var)
32 assert_includes vars, 'pin'
33 assert_includes vars, 'confirm_pin'
34 }
35 end
36 em :test_execute_returns_form_for_registered_user
37
38 def test_execute_rejects_unregistered_user
39 property_of {
40 PortOutPinExecuteCmd
41 .new(REDIS)
42 .redis_state { |_jid, _phone| @redis.reset! }
43 .generate
44 }.check { |_metadata, example|
45 process_stanza(example['stanza'])
46
47 assert_equal 1, written.length
48 reply = written.shift
49 assert_kind_of Blather::StanzaError, reply
50 assert_equal :auth, reply.type
51 assert_equal :registration_required, reply.name
52 }
53 end
54 em :test_execute_rejects_unregistered_user
55
56 def test_complete_success_sets_pin
57 property_of {
58 PortOutPinCompleteCmd.new(REDIS).generate
59 }.check { |_metadata, example|
60 BandwidthTNOptions.stub(
61 :set_port_out_pin,
62 EMPromise.resolve(nil)
63 ) do
64 process_stanza(example['stanza'])
65 end
66
67 assert_equal 1, written.length
68 reply = written.shift
69
70 assert_equal example['jid'], reply.to.to_s
71 assert_equal :completed, reply.status
72 assert_equal 'set-port-out-pin', reply.node
73 ns = 'http://jabber.org/protocol/commands'
74 note = reply.find('.//ns:note', ns: ns).first
75 assert_equal 'info', note[:type]
76 assert_equal 'Port-out PIN has been set successfully.', note.content
77 }
78 end
79 em :test_complete_success_sets_pin
80end