test_disco_info.rb

 1# frozen_string_literal: true
 2
 3require "test_helper"
 4require_relative "../../sgx-bwmsgsv2"
 5require "rantly/minitest_extensions"
 6require_relative "generators/disco_info_iq"
 7
 8def panic(e)
 9	$panic = e
10end
11
12class DiscoInfoPropertyTest < Minitest::Test
13	def setup
14		reset_stanzas!
15		reset_redis!
16	end
17
18	def test_disco_info_get_for_user_returns_user_caps
19		property_of {
20			DiscoInfoIQ
21				.new(REDIS)
22				.target_node { nanpa_phone }
23				.generate
24		}.check { |_metadata, example|
25			process_stanza(example['stanza'])
26
27			assert_equal 1, written.length
28			reply = written.shift
29
30			assert_equal example['jid'], reply.to.to_s
31
32			ns = 'http://jabber.org/protocol/disco#info'
33			ids = reply.query.find('.//ns:identity', ns: ns)
34			assert_equal 1, ids.length
35			assert_equal 'client', ids.first[:category]
36			assert_equal 'sms', ids.first[:type]
37
38			feats = reply.query.find('.//ns:feature', ns: ns).map { |f| f[:var] }
39			assert_includes feats, 'urn:xmpp:receipts'
40		}
41	end
42	em :test_disco_info_get_for_user_returns_user_caps
43end