Unittest: Add more caps hash examples

This commit is contained in:
Philipp Hörist 2018-11-21 19:58:57 +01:00
parent 35b5a4d7a9
commit 1196e1df0d
1 changed files with 96 additions and 7 deletions

View File

@ -8,8 +8,8 @@ from nbxmpp import NS_MUC, NS_PING, NS_XHTML_IM, Iq
from gajim.common import caps_cache as caps
from gajim.common.modules.discovery import Discovery
COMPLEX_EXAMPLE = '''
<iq from='benvolio@capulet.lit/230193' id='disco1' to='juliet@capulet.lit/chamber' type='result'>
EXAMPLES = [
'''<iq>
<query xmlns='http://jabber.org/protocol/disco#info' node='http://psi-im.org#q07IKJEyjvHSyhy//CH0CxmKi8w='>
<identity xml:lang='en' category='client' name='Psi 0.11' type='pc'/>
<identity xml:lang='el' category='client' name='Ψ 0.11' type='pc'/>
@ -39,7 +39,94 @@ COMPLEX_EXAMPLE = '''
</field>
</x>
</query>
</iq>'''
</iq>
''',
'''<iq>
<query node="http://bombusmod.net.ru/caps#tbBQGBMv8g8U7kW55TEZZRnMCJ4=" xmlns="http://jabber.org/protocol/disco#info">
<identity category="client" name="BombusMod" type="mobile"/>
<feature var="http://jabber.org/protocol/chatstates"/>
<feature var="http://jabber.org/protocol/disco#info"/>
<feature var="http://jabber.org/protocol/disco#items"/>
<feature var="http://jabber.org/protocol/rosterx"/>
<feature var="jabber:iq:last"/>
<feature var="jabber:iq:privacy"/>
<feature var="jabber:iq:roster"/>
<feature var="jabber:iq:time"/>
<feature var="jabber:iq:version"/>
<feature var="jabber:x:oob"/>
<feature var="urn:xmpp:ping"/>
<feature var="urn:xmpp:receipts"/>
<feature var="urn:xmpp:time"/>
</query>
</iq>
''',
'''<iq>
<query node="http://jappix.org/#qRsaGbKTz8EwAOakYO00InkZUxM=" xmlns="http://jabber.org/protocol/disco#info">
<identity category="client" name="Jappix" type="web"/>
<feature var="http://jabber.org/protocol/activity"/>
<feature var="http://jabber.org/protocol/activity+notify"/>
<feature var="http://jabber.org/protocol/caps"/>
<feature var="http://jabber.org/protocol/chatstates"/>
<feature var="http://jabber.org/protocol/commands"/>
<feature var="http://jabber.org/protocol/disco#info"/>
<feature var="http://jabber.org/protocol/disco#items"/>
<feature var="http://jabber.org/protocol/geoloc"/>
<feature var="http://jabber.org/protocol/geoloc+notify"/>
<feature var="http://jabber.org/protocol/http-auth"/>
<feature var="http://jabber.org/protocol/httpbind"/>
<feature var="http://jabber.org/protocol/mood"/>
<feature var="http://jabber.org/protocol/mood+notify"/>
<feature var="http://jabber.org/protocol/muc"/>
<feature var="http://jabber.org/protocol/muc#admin"/>
<feature var="http://jabber.org/protocol/muc#owner"/>
<feature var="http://jabber.org/protocol/muc#roomconfig"/>
<feature var="http://jabber.org/protocol/muc#user"/>
<feature var="http://jabber.org/protocol/nick"/>
<feature var="http://jabber.org/protocol/pubsub#retrieve-items"/>
<feature var="http://jabber.org/protocol/rosterx"/>
<feature var="http://jabber.org/protocol/tune"/>
<feature var="http://jabber.org/protocol/tune+notify"/>
<feature var="http://jabber.org/protocol/xhtml-im"/>
<feature var="ipv6"/>
<feature var="jabber:iq:last"/>
<feature var="jabber:iq:oob"/>
<feature var="jabber:iq:privacy"/>
<feature var="jabber:iq:private"/>
<feature var="jabber:iq:register"/>
<feature var="jabber:iq:roster"/>
<feature var="jabber:iq:search"/>
<feature var="jabber:iq:version"/>
<feature var="jabber:x:data"/>
<feature var="jabber:x:oob"/>
<feature var="urn:ietf:params:xml:ns:vcard-4.0"/>
<feature var="urn:ietf:rfc:3264"/>
<feature var="urn:xmpp:avatar:data"/>
<feature var="urn:xmpp:avatar:metadata"/>
<feature var="urn:xmpp:delay"/>
<feature var="urn:xmpp:extdisco:1"/>
<feature var="urn:xmpp:inbox"/>
<feature var="urn:xmpp:inbox+notify"/>
<feature var="urn:xmpp:jingle:1"/>
<feature var="urn:xmpp:jingle:apps:rtp:1"/>
<feature var="urn:xmpp:jingle:apps:rtp:audio"/>
<feature var="urn:xmpp:jingle:apps:rtp:rtcp-fb:0"/>
<feature var="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0"/>
<feature var="urn:xmpp:jingle:apps:rtp:video"/>
<feature var="urn:xmpp:jingle:apps:rtp:zrtp:1"/>
<feature var="urn:xmpp:jingle:transports:ice-udp:1"/>
<feature var="urn:xmpp:mam:0"/>
<feature var="urn:xmpp:microblog:0"/>
<feature var="urn:xmpp:microblog:0+notify"/>
<feature var="urn:xmpp:ping"/>
<feature var="urn:xmpp:receipts"/>
<feature var="urn:xmpp:time"/>
<feature var="urn:xmpp:tmp:jingle:apps:dtls:0"/>
<feature var="vcard-temp"/>
</query>
</iq>''',
]
class CommonCapsTest(unittest.TestCase):
@ -125,10 +212,12 @@ class TestCapsCache(CommonCapsTest):
def test_hash(self):
'''tests the hash computation'''
stanza = Iq(node=COMPLEX_EXAMPLE)
identities, features, data, _ = Discovery.parse_info_response(stanza)
computed_hash = caps.compute_caps_hash(identities, features, data)
self.assertEqual('q07IKJEyjvHSyhy//CH0CxmKi8w=', computed_hash)
for example in EXAMPLES:
stanza = Iq(node=example)
identities, features, data, node = Discovery.parse_info_response(stanza)
computed_hash = caps.compute_caps_hash(identities, features, data)
hash_ = node.split('#')[1]
self.assertEqual(hash_, computed_hash)
class TestClientCaps(CommonCapsTest):