test(port-out-pin): complete nil pin returns error

Phillip Davis created

Change summary

test/property/test_port_out_pin.rb | 47 ++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)

Detailed changes

test/property/test_port_out_pin.rb 🔗

@@ -77,4 +77,51 @@ class PortOutPinPropertyTest < Minitest::Test
 		}
 	end
 	em :test_complete_success_sets_pin
+
+	def test_complete_nil_pin_returns_error
+		property_of {
+			PortOutPinCompleteCmd
+				.new(REDIS)
+				.pin {
+					choose(true, false) ? nil : sized(range(4, 10)) { string(:alnum) }
+				}
+				.confirm_pin { |pin|
+					pin.nil? ? choose(nil, sized(range(4, 10)) { string(:alnum) }) : nil
+				}
+				.stanza { |jid, sid, pin, cpin|
+					cmd = Blather::Stanza::Iq::Command.new
+					cmd.type = :set
+					cmd.to = 'component'
+					cmd.node = 'set-port-out-pin'
+					cmd.sessionid = sid
+					cmd.action = :complete
+					cmd.from = jid
+					cmd.form.type = :submit
+
+					fields = []
+					if pin
+						fields << { var: 'pin', value: pin }
+					elsif choose(true, false)
+						fields << { var: 'pin', value: nil }
+					end
+					if cpin
+						fields << { var: 'confirm_pin', value: cpin }
+					elsif choose(true, false)
+						fields << { var: 'confirm_pin', value: nil }
+					end
+					cmd.form.fields = fields unless fields.empty?
+					cmd
+				}
+				.generate
+		}.check { |_metadata, example|
+			process_stanza(example['stanza'])
+
+			assert_equal 1, written.length
+			reply = written.shift
+			assert_kind_of Blather::StanzaError, reply
+			assert_equal :modify, reply.type
+			assert_equal :bad_request, reply.name
+		}
+	end
+	em :test_complete_nil_pin_returns_error
 end