summaryrefslogtreecommitdiff
path: root/tests/test_stream_xep_0128.py
blob: 1c1da88f7d3cecfdc8ad066f0a0590d564516bf5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import unittest
from slixmpp.test import SlixTest


class TestStreamExtendedDisco(SlixTest):

    """
    Test using the XEP-0128 plugin.
    """

    def tearDown(self):
        self.stream_close()

    def testUsingExtendedInfo(self):
        self.stream_start(mode='client',
                          jid='tester@localhost',
                          plugins=['xep_0030',
                                   'xep_0004',
                                   'xep_0128'])

        form = self.xmpp['xep_0004'].makeForm(ftype='result')
        form.addField(var='FORM_TYPE', ftype='hidden', value='testing')

        info_ns = 'http://jabber.org/protocol/disco#info'
        self.xmpp['xep_0030'].add_identity(node='test',
                                           category='client',
                                           itype='bot')
        self.xmpp['xep_0030'].add_feature(node='test', feature=info_ns)
        self.xmpp['xep_0128'].set_extended_info(node='test', data=form)

        self.recv("""
          <iq type="get" id="test" to="tester@localhost">
            <query xmlns="http://jabber.org/protocol/disco#info"
                   node="test" />
          </iq>
        """)

        self.send("""
          <iq type="result" id="test">
            <query xmlns="http://jabber.org/protocol/disco#info"
                   node="test">
              <identity category="client" type="bot" />
              <feature var="http://jabber.org/protocol/disco#info" />
              <x xmlns="jabber:x:data" type="result">
                <field var="FORM_TYPE" type="hidden">
                  <value>testing</value>
                </field>
              </x>
            </query>
          </iq>
        """)

    def testUsingMultipleExtendedInfo(self):
        self.stream_start(mode='client',
                          jid='tester@localhost',
                          plugins=['xep_0030',
                                   'xep_0004',
                                   'xep_0128'])

        form1 = self.xmpp['xep_0004'].makeForm(ftype='result')
        form1.addField(var='FORM_TYPE', ftype='hidden', value='testing')

        form2 = self.xmpp['xep_0004'].makeForm(ftype='result')
        form2.addField(var='FORM_TYPE', ftype='hidden', value='testing_2')

        info_ns = 'http://jabber.org/protocol/disco#info'
        self.xmpp['xep_0030'].add_identity(node='test',
                                           category='client',
                                           itype='bot')
        self.xmpp['xep_0030'].add_feature(node='test', feature=info_ns)
        self.xmpp['xep_0128'].set_extended_info(node='test', data=[form1, form2])

        self.recv("""
          <iq type="get" id="test" to="tester@localhost">
            <query xmlns="http://jabber.org/protocol/disco#info"
                   node="test" />
          </iq>
        """)

        self.send("""
          <iq type="result" id="test">
            <query xmlns="http://jabber.org/protocol/disco#info"
                   node="test">
              <identity category="client" type="bot" />
              <feature var="http://jabber.org/protocol/disco#info" />
              <x xmlns="jabber:x:data" type="result">
                <field var="FORM_TYPE" type="hidden">
                  <value>testing</value>
                </field>
              </x>
              <x xmlns="jabber:x:data" type="result">
                <field var="FORM_TYPE" type="hidden">
                  <value>testing_2</value>
                </field>
              </x>
            </query>
          </iq>
        """)


suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamExtendedDisco)