File: test_reactions.py

package info (click to toggle)
python-nbxmpp 6.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,340 kB
  • sloc: python: 19,639; makefile: 4
file content (136 lines) | stat: -rw-r--r-- 4,538 bytes parent folder | download | duplicates (2)
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())