Change summary
test/property/generators/disco_items_iq.rb | 34 +++++++++++++++++++
test/property/test_disco_items.rb | 41 ++++++++++++++++++++++++
2 files changed, 75 insertions(+)
Detailed changes
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+require "jennifer"
+require_relative "../rantly_extensions/data_extensions"
+
+class DiscoItemsIQ
+ # @param redis [FakeRedis]
+ def initialize(redis)
+ @redis = redis
+ end
+
+ include Jennifer.rant(self) {
+ jid { bare_jid }
+ phone(transient: true) { nanpa_phone }
+
+ stanza derived_from(:jid) do |jid|
+ di = Blather::Stanza::DiscoItems.new
+ di.type = :get
+ di.to = ARGV[0]
+ di.node = 'http://jabber.org/protocol/commands'
+ di.from = jid
+ di
+ end
+
+ redis_state derived_from(:jid, :phone), transient: true do |jid, phone|
+ @redis.reset!
+ @redis.rpush("catapult_cred-#{jid}", 'acct', 'token', 'secret', phone)
+ end
+
+ written_state(transient: true) {
+ SGXbwmsgsv2.instance_variable_set(:@written, [])
+ }
+ }
+end
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require "test_helper"
+require_relative "../../sgx-bwmsgsv2"
+require "rantly/minitest_extensions"
+require_relative "generators/disco_items_iq"
+
+def panic(e)
+ $panic = e
+end
+
+class DiscoItemsPropertyTest < Minitest::Test
+ def setup
+ reset_stanzas!
+ reset_redis!
+ end
+
+ def test_eligible_tn_shows_port_out_pin_command
+ property_of {
+ DiscoItemsIQ.new(REDIS).generate
+ }.check { |_metadata, example|
+ BandwidthTNOptions.stub(
+ :tn_eligible_for_port_out_pin?,
+ EMPromise.resolve(true)
+ ) do
+ process_stanza(example['stanza'])
+ end
+
+ assert_equal 1, written.length
+ reply = written.shift
+
+ assert_equal example['jid'], reply.to.to_s
+
+ ns = 'http://jabber.org/protocol/disco#items'
+ items = reply.query.find('.//ns:item', ns: ns)
+ assert_equal 1, items.length
+ assert_equal 'set-port-out-pin', items.first[:node]
+ }
+ end
+ em :test_eligible_tn_shows_port_out_pin_command
+end