@@ -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