diff --git a/test/property/test_port_out_pin.rb b/test/property/test_port_out_pin.rb index ea0a4efa4c1752b7a24bcc7f29d808c14c6e41e2..a449fe0d4b019182d9fcdcc9fc85485cd259c1c3 100644 --- a/test/property/test_port_out_pin.rb +++ b/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