test_port_out_pin.rb

 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
55end