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