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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
from test.lib.util import StanzaHandlerTest
from nbxmpp.modules.reactions import Reactions
from nbxmpp.protocol import Message
from nbxmpp.structs import Reactions as ReactionStruct
class MockLog:
@staticmethod
def warning(_):
pass
class MockModule:
_log = MockLog
@staticmethod
def is_emoji(s):
return Reactions.is_emoji(s)
class ReactionsTest(StanzaHandlerTest):
def test_reaction_parsing(self):
class P:
reactions: ReactionStruct
xml = """
<message to='romeo@capulet.net/orchard' id='96d73204-a57a-11e9-88b8-4889e7820c76' type='chat'>
<reactions id='744f6e18-a57a-11e9-a656-4889e7820c76' xmlns='urn:xmpp:reactions:0'>
<reaction>👋 </reaction>
<reaction>🐢</reaction>
</reactions>
<store xmlns='urn:xmpp:hints'/>
</message>
"""
msg = Message(node=xml)
Reactions._process_message_reaction(MockModule, self, msg, P)
self.assertEqual(P.reactions.id, "744f6e18-a57a-11e9-a656-4889e7820c76")
self.assertEqual(P.reactions.emojis, {"👋", "🐢"})
def test_no_reactions(self):
class P:
reactions: ReactionStruct = None
xml = """
<message to='romeo@capulet.net/orchard' id='96d73204-a57a-11e9-88b8-4889e7820c76' type='chat'>
<store xmlns='urn:xmpp:hints'/>
</message>
"""
msg = Message(node=xml)
Reactions._process_message_reaction(MockModule, self, msg, P)
self.assertIsNone(P.reactions)
def test_empty_reactions(self):
class P:
reactions: ReactionStruct
xml = """
<message to='romeo@capulet.net/orchard' id='96d73204-a57a-11e9-88b8-4889e7820c76' type='chat'>
<reactions id='744f6e18-a57a-11e9-a656-4889e7820c76' xmlns='urn:xmpp:reactions:0' />
<store xmlns='urn:xmpp:hints'/>
</message>
"""
msg = Message(node=xml)
Reactions._process_message_reaction(MockModule, self, msg, P)
self.assertEqual(len(P.reactions.emojis), 0)
def test_invalid_reactions_no_id(self):
class P:
reactions: ReactionStruct
xml = """
<message to='romeo@capulet.net/orchard' id='96d73204-a57a-11e9-88b8-4889e7820c76' type='chat'>
<reactions xmlns='urn:xmpp:reactions:0'>
<reaction>👋</reaction>
<reaction>🐢</reaction>
</reactions>
<store xmlns='urn:xmpp:hints'/>
</message>
"""
msg = Message(node=xml)
Reactions._process_message_reaction(MockModule, self, msg, P)
self.assertFalse(hasattr(P, "reactions"))
def test_invalid_reactions_empty_id(self):
class P:
reactions: ReactionStruct
xml = """
<message to='romeo@capulet.net/orchard' id='96d73204-a57a-11e9-88b8-4889e7820c76' type='chat'>
<reactions id='' xmlns='urn:xmpp:reactions:0'>
<reaction>👋</reaction>
<reaction>🐢</reaction>
</reactions>
<store xmlns='urn:xmpp:hints'/>
</message>
"""
msg = Message(node=xml)
Reactions._process_message_reaction(MockModule, self, msg, P)
self.assertFalse(hasattr(P, "reactions"))
def test_invalid_reactions_empty_emoji(self):
class P:
reactions: ReactionStruct
xml = """
<message to='romeo@capulet.net/orchard' id='96d73204-a57a-11e9-88b8-4889e7820c76' type='chat'>
<reactions id='sadfsadf' xmlns='urn:xmpp:reactions:0'>
<reaction></reaction>
<reaction>🐢</reaction>
</reactions>
<store xmlns='urn:xmpp:hints'/>
</message>
"""
msg = Message(node=xml)
Reactions._process_message_reaction(MockModule, self, msg, P)
self.assertEqual(P.reactions.emojis, {"🐢"})
def test_set_reactions(self):
x = Message()
x.setReactions("id", "🐢")
self.assertEqual(x.getReactions(), ("id", {"🐢"}))
x = Message()
x.setReactions("id", "🐢👋")
self.assertEqual(x.getReactions(), ("id", {"🐢", "👋"}))
x = Message()
x.setReactions("id", "")
self.assertEqual(x.getReactions(), ("id", set()))
x = Message()
self.assertIsNone(x.getReactions())
|