annotate libervia/backend/test/test_core_xmpp.py @ 4340:ea72364131d5 default tip @

doc (components): Update Email Gateway documentation: A section has been added to explain how attachments are handled. fix 453
author Goffi <goffi@goffi.org>
date Tue, 03 Dec 2024 00:53:18 +0100
parents 0d7bb4df2343
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
1 #!/usr/bin/env python3
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
335
Goffi <goffi@goffi.org>
parents:
diff changeset
3
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
4 # SAT: a jabber client
3479
be6d91572633 date update
Goffi <goffi@goffi.org>
parents: 3398
diff changeset
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
6
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
7 # This program is free software: you can redistribute it and/or modify
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
10 # (at your option) any later version.
335
Goffi <goffi@goffi.org>
parents:
diff changeset
11
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
12 # This program is distributed in the hope that it will be useful,
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
15 # GNU Affero General Public License for more details.
335
Goffi <goffi@goffi.org>
parents:
diff changeset
16
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
335
Goffi <goffi@goffi.org>
parents:
diff changeset
19
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
20 from libervia.backend.test import helpers
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
21 from .constants import Const
335
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from twisted.trial import unittest
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
23 from libervia.backend.core import xmpp
335
Goffi <goffi@goffi.org>
parents:
diff changeset
24 from twisted.words.protocols.jabber.jid import JID
Goffi <goffi@goffi.org>
parents:
diff changeset
25 from wokkel.generic import parseXml
Goffi <goffi@goffi.org>
parents:
diff changeset
26 from wokkel.xmppim import RosterItem
Goffi <goffi@goffi.org>
parents:
diff changeset
27
Goffi <goffi@goffi.org>
parents:
diff changeset
28
Goffi <goffi@goffi.org>
parents:
diff changeset
29 class SatXMPPClientTest(unittest.TestCase):
Goffi <goffi@goffi.org>
parents:
diff changeset
30
Goffi <goffi@goffi.org>
parents:
diff changeset
31 def setUp(self):
Goffi <goffi@goffi.org>
parents:
diff changeset
32 self.host = helpers.FakeSAT()
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
33 self.client = xmpp.SatXMPPClient(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
34 self.host, Const.PROFILE[0], JID("test@example.org"), "test"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
35 )
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
36
335
Goffi <goffi@goffi.org>
parents:
diff changeset
37 def test_init(self):
Goffi <goffi@goffi.org>
parents:
diff changeset
38 """Check that init values are correctly initialised"""
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 780
diff changeset
39 self.assertEqual(self.client.profile, Const.PROFILE[0])
3398
467d6c709f1d test: fixed use of `client.host` in legacy test:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
40 print(self.client.jid.host)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
41 self.assertEqual(self.client.host_app, self.host)
Goffi <goffi@goffi.org>
parents:
diff changeset
42
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
43
335
Goffi <goffi@goffi.org>
parents:
diff changeset
44 class SatMessageProtocolTest(unittest.TestCase):
Goffi <goffi@goffi.org>
parents:
diff changeset
45
Goffi <goffi@goffi.org>
parents:
diff changeset
46 def setUp(self):
Goffi <goffi@goffi.org>
parents:
diff changeset
47 self.host = helpers.FakeSAT()
Goffi <goffi@goffi.org>
parents:
diff changeset
48 self.message = xmpp.SatMessageProtocol(self.host)
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 648
diff changeset
49 self.message.parent = helpers.FakeClient(self.host)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
50
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
51 def test_on_message(self):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
52 xml = """
Goffi <goffi@goffi.org>
parents:
diff changeset
53 <message type="chat" from="sender@example.net/house" to="test@example.org/SàT" id="test_1">
Goffi <goffi@goffi.org>
parents:
diff changeset
54 <body>test</body>
Goffi <goffi@goffi.org>
parents:
diff changeset
55 </message>
Goffi <goffi@goffi.org>
parents:
diff changeset
56 """
Goffi <goffi@goffi.org>
parents:
diff changeset
57 stanza = parseXml(xml)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
58 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
59 "message_new",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
60 "sender@example.net/house",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
61 "test",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
62 "chat",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
63 "test@example.org/SàT",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
64 {},
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
65 profile=Const.PROFILE[0],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
66 )
335
Goffi <goffi@goffi.org>
parents:
diff changeset
67 self.message.onMessage(stanza)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
68
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
69
4107
bc7d45dedeb0 backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
70 class LiberviaRosterProtocolTest(unittest.TestCase):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
71
Goffi <goffi@goffi.org>
parents:
diff changeset
72 def setUp(self):
Goffi <goffi@goffi.org>
parents:
diff changeset
73 self.host = helpers.FakeSAT()
4107
bc7d45dedeb0 backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
74 self.roster = xmpp.LiberviaRosterProtocol(self.host)
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 648
diff changeset
75 self.roster.parent = helpers.FakeClient(self.host)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
76
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
77 def test_register_item(self):
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 780
diff changeset
78 roster_item = RosterItem(Const.JID[0])
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
79 roster_item.name = "Test Man"
335
Goffi <goffi@goffi.org>
parents:
diff changeset
80 roster_item.subscriptionTo = True
Goffi <goffi@goffi.org>
parents:
diff changeset
81 roster_item.subscriptionFrom = True
Goffi <goffi@goffi.org>
parents:
diff changeset
82 roster_item.ask = False
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
83 roster_item.groups = set(["Test Group 1", "Test Group 2", "Test Group 3"])
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
84 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
85 "contact_new",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
86 Const.JID_STR[0],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
87 {"to": "True", "from": "True", "ask": "False", "name": "Test Man"},
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
88 set(["Test Group 1", "Test Group 2", "Test Group 3"]),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
89 Const.PROFILE[0],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
90 )
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
91 self.roster._register_item(roster_item)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
92
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
93
335
Goffi <goffi@goffi.org>
parents:
diff changeset
94 class SatPresenceProtocolTest(unittest.TestCase):
Goffi <goffi@goffi.org>
parents:
diff changeset
95
Goffi <goffi@goffi.org>
parents:
diff changeset
96 def setUp(self):
Goffi <goffi@goffi.org>
parents:
diff changeset
97 self.host = helpers.FakeSAT()
Goffi <goffi@goffi.org>
parents:
diff changeset
98 self.presence = xmpp.SatPresenceProtocol(self.host)
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 648
diff changeset
99 self.presence.parent = helpers.FakeClient(self.host)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
100
Goffi <goffi@goffi.org>
parents:
diff changeset
101 def test_availableReceived(self):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
102 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
103 "presence_update",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
104 Const.JID_STR[0],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
105 "xa",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
106 15,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
107 {"default": "test status", "fr": "statut de test"},
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
108 Const.PROFILE[0],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
109 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
110 self.presence.availableReceived(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
111 Const.JID[0], "xa", {None: "test status", "fr": "statut de test"}, 15
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
112 )
335
Goffi <goffi@goffi.org>
parents:
diff changeset
113
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
114 def test_available_received_empty_statuses(self):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
115 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
116 "presence_update", Const.JID_STR[0], "xa", 15, {}, Const.PROFILE[0]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
117 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
118 self.presence.availableReceived(Const.JID[0], "xa", None, 15)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
119
Goffi <goffi@goffi.org>
parents:
diff changeset
120 def test_unavailableReceived(self):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
121 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
122 "presence_update", Const.JID_STR[0], "unavailable", 0, {}, Const.PROFILE[0]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
123 )
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 780
diff changeset
124 self.presence.unavailableReceived(Const.JID[0], None)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
125
Goffi <goffi@goffi.org>
parents:
diff changeset
126 def test_subscribedReceived(self):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
127 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
128 "subscribe", "subscribed", Const.JID[0].userhost(), Const.PROFILE[0]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
129 )
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 780
diff changeset
130 self.presence.subscribedReceived(Const.JID[0])
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
131
335
Goffi <goffi@goffi.org>
parents:
diff changeset
132 def test_unsubscribedReceived(self):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
133 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
134 "subscribe", "unsubscribed", Const.JID[0].userhost(), Const.PROFILE[0]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
135 )
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 780
diff changeset
136 self.presence.unsubscribedReceived(Const.JID[0])
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
137
335
Goffi <goffi@goffi.org>
parents:
diff changeset
138 def test_subscribeReceived(self):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
139 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
140 "subscribe", "subscribe", Const.JID[0].userhost(), Const.PROFILE[0]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
141 )
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 780
diff changeset
142 self.presence.subscribeReceived(Const.JID[0])
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
143
335
Goffi <goffi@goffi.org>
parents:
diff changeset
144 def test_unsubscribeReceived(self):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
145 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
146 "subscribe", "unsubscribe", Const.JID[0].userhost(), Const.PROFILE[0]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
147 )
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 780
diff changeset
148 self.presence.unsubscribeReceived(Const.JID[0])