summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--itests/test_disco.py33
-rw-r--r--itests/test_mam.py55
-rw-r--r--itests/test_muc.py4
-rw-r--r--itests/test_ping.py21
-rw-r--r--itests/test_privatestorage.py35
-rw-r--r--itests/test_reactions.py32
-rw-r--r--itests/test_retract.py29
-rw-r--r--slixmpp/plugins/xep_0444/reactions.py2
-rw-r--r--slixmpp/test/integration.py3
9 files changed, 210 insertions, 4 deletions
diff --git a/itests/test_disco.py b/itests/test_disco.py
new file mode 100644
index 00000000..95a07b17
--- /dev/null
+++ b/itests/test_disco.py
@@ -0,0 +1,33 @@
+import unittest
+from slixmpp.test.integration import SlixIntegration
+
+
+class TestDisco(SlixIntegration):
+ async def asyncSetUp(self):
+ await super().asyncSetUp()
+ self.add_client(
+ self.envjid('CI_ACCOUNT1'),
+ self.envstr('CI_ACCOUNT1_PASSWORD'),
+ )
+ self.add_client(
+ self.envjid('CI_ACCOUNT2'),
+ self.envstr('CI_ACCOUNT2_PASSWORD'),
+ )
+ self.register_plugins(['xep_0030'])
+ await self.connect_clients()
+
+ async def test_features(self):
+ """Check we can add, get and delete a feature"""
+ self.clients[0]['xep_0030'].add_feature('urn:xmpp:fake:0')
+ info = await self.clients[1]['xep_0030'].get_info(
+ self.clients[0].boundjid.full
+ )
+ self.assertIn('urn:xmpp:fake:0', info['disco_info']['features'])
+ self.clients[0]['xep_0030'].del_feature(feature='urn:xmpp:fake:0')
+ info = await self.clients[1]['xep_0030'].get_info(
+ self.clients[0].boundjid.full
+ )
+ self.assertNotIn('urn:xmpp:fake:0', info['disco_info']['features'])
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestDisco)
diff --git a/itests/test_mam.py b/itests/test_mam.py
new file mode 100644
index 00000000..f61bc1e6
--- /dev/null
+++ b/itests/test_mam.py
@@ -0,0 +1,55 @@
+import unittest
+from random import randint
+from slixmpp import JID
+from slixmpp.test.integration import SlixIntegration
+
+
+class TestMAM(SlixIntegration):
+ async def asyncSetUp(self):
+ await super().asyncSetUp()
+ self.add_client(
+ self.envjid('CI_ACCOUNT1'),
+ self.envstr('CI_ACCOUNT1_PASSWORD'),
+ )
+ self.add_client(
+ self.envjid('CI_ACCOUNT2'),
+ self.envstr('CI_ACCOUNT2_PASSWORD'),
+ )
+ self.register_plugins(['xep_0313'])
+ await self.connect_clients()
+
+ async def test_mam_retrieve(self):
+ """Make sure we can get messages from our archive"""
+ # send messages first
+ tok = randint(1, 999999)
+ self.clients[0].make_message(mto=self.clients[1].boundjid, mbody='coucou').send()
+ await self.clients[1].wait_until('message')
+ self.clients[1].make_message(
+ mto=self.clients[0].boundjid,
+ mbody='coucou coucou %s' % tok,
+ ).send()
+ await self.clients[0].wait_until('message')
+
+ # Get archive
+ retrieve = self.clients[0]['xep_0313'].retrieve(
+ with_jid=JID(self.envjid('CI_ACCOUNT2')),
+ iterator=True,
+ reverse=True,
+ rsm={'max': 2}
+ )
+ msgs = []
+ count = 0
+ async for rsm in retrieve:
+ for msg in rsm['mam']['results']:
+ msgs.append(
+ msg['mam_result']['forwarded']['stanza']
+ )
+ count += 1
+ if count >= 2:
+ break
+
+ self.assertEqual(msgs[0]['body'], 'coucou')
+ self.assertEqual(msgs[1]['body'], 'coucou coucou %s' % tok)
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestMAM)
diff --git a/itests/test_muc.py b/itests/test_muc.py
index 3dc91955..91073863 100644
--- a/itests/test_muc.py
+++ b/itests/test_muc.py
@@ -7,7 +7,7 @@ from slixmpp.test.integration import SlixIntegration
UNIQUE = uuid4().hex
-class TestConnect(SlixIntegration):
+class TestMUC(SlixIntegration):
async def asyncSetUp(self):
self.mucserver = self.envjid('CI_MUC_SERVER')
@@ -75,4 +75,4 @@ class TestConnect(SlixIntegration):
)
-suite = unittest.TestLoader().loadTestsFromTestCase(TestConnect)
+suite = unittest.TestLoader().loadTestsFromTestCase(TestMUC)
diff --git a/itests/test_ping.py b/itests/test_ping.py
new file mode 100644
index 00000000..fd190e03
--- /dev/null
+++ b/itests/test_ping.py
@@ -0,0 +1,21 @@
+import unittest
+from slixmpp.test.integration import SlixIntegration
+
+
+class TestPing(SlixIntegration):
+ async def asyncSetUp(self):
+ await super().asyncSetUp()
+ self.add_client(
+ self.envjid('CI_ACCOUNT1'),
+ self.envstr('CI_ACCOUNT1_PASSWORD'),
+ )
+ self.register_plugins(['xep_0199'])
+ await self.connect_clients()
+
+ async def test_ping(self):
+ """Check we can ping our own server"""
+ rtt = await self.clients[0]['xep_0199'].ping()
+ self.assertGreater(10, rtt)
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestPing)
diff --git a/itests/test_privatestorage.py b/itests/test_privatestorage.py
new file mode 100644
index 00000000..fd7f3f1b
--- /dev/null
+++ b/itests/test_privatestorage.py
@@ -0,0 +1,35 @@
+import unittest
+from slixmpp import ET
+from slixmpp.test.integration import SlixIntegration
+from slixmpp.plugins.xep_0048.stanza import Bookmarks
+
+
+class TestPrivateStorage(SlixIntegration):
+ async def asyncSetUp(self):
+ self.add_client(
+ self.envjid('CI_ACCOUNT1'),
+ self.envstr('CI_ACCOUNT1_PASSWORD'),
+ )
+ self.register_plugins(['xep_0048', 'xep_0049'])
+ await self.connect_clients()
+
+ async def test_privatestorage(self):
+ """Check we can set, get, and delete private in xml storage"""
+ # Set a bookmark using private storage
+ el = Bookmarks()
+ el.add_conference('test@example.com', 'toto')
+ await self.clients[0]['xep_0049'].store(
+ el,
+ )
+ result = await self.clients[0]['xep_0049'].retrieve('bookmarks')
+ self.assertEqual(str(result['private']['bookmarks']), str(el))
+
+ # Purge bookmarks
+ await self.clients[0]['xep_0049'].store(
+ Bookmarks(),
+ )
+ result = await self.clients[0]['xep_0049'].retrieve('bookmarks')
+ self.assertEqual(result['private']['bookmarks'], Bookmarks())
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestPrivateStorage)
diff --git a/itests/test_reactions.py b/itests/test_reactions.py
new file mode 100644
index 00000000..2358ecff
--- /dev/null
+++ b/itests/test_reactions.py
@@ -0,0 +1,32 @@
+import unittest
+from slixmpp.test.integration import SlixIntegration
+
+
+class TestReactions(SlixIntegration):
+ async def asyncSetUp(self):
+ self.add_client(
+ self.envjid('CI_ACCOUNT1'),
+ self.envstr('CI_ACCOUNT1_PASSWORD'),
+ )
+ self.add_client(
+ self.envjid('CI_ACCOUNT2'),
+ self.envstr('CI_ACCOUNT2_PASSWORD'),
+ )
+ self.register_plugins(['xep_0444'])
+ await self.connect_clients()
+
+ async def test_send_reaction(self):
+ """Make sure we can send and receive reactions"""
+ self.clients[0]['xep_0444'].send_reactions(
+ self.clients[1].boundjid.full,
+ to_id='toto',
+ reactions=['🦙', '🦦'],
+ )
+ msg = await self.clients[1].wait_until('reactions')
+ self.assertEqual(
+ msg['reactions'].get_values(),
+ {'🦙', '🦦'},
+ )
+ self.assertEqual(msg['reactions']['id'], 'toto')
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestReactions)
diff --git a/itests/test_retract.py b/itests/test_retract.py
new file mode 100644
index 00000000..55f79fa9
--- /dev/null
+++ b/itests/test_retract.py
@@ -0,0 +1,29 @@
+import unittest
+from slixmpp.test.integration import SlixIntegration
+
+
+class TestRetract(SlixIntegration):
+ async def asyncSetUp(self):
+ self.add_client(
+ self.envjid('CI_ACCOUNT1'),
+ self.envstr('CI_ACCOUNT1_PASSWORD'),
+ )
+ self.add_client(
+ self.envjid('CI_ACCOUNT2'),
+ self.envstr('CI_ACCOUNT2_PASSWORD'),
+ )
+ self.register_plugins(['xep_0424'])
+ await self.connect_clients()
+
+ async def test_retract_msg(self):
+ """Try to retract a message"""
+ self.clients[0]['xep_0424'].send_retraction(
+ self.clients[1].boundjid.full,
+ id='toto',
+ fallback_text='Twas a mistake',
+ )
+ msg = await self.clients[1].wait_until('message')
+ self.assertEqual(msg['apply_to']['id'], 'toto')
+ self.assertTrue(msg['apply_to']['retract'])
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestRetract)
diff --git a/slixmpp/plugins/xep_0444/reactions.py b/slixmpp/plugins/xep_0444/reactions.py
index e65f5e8f..37ab7d55 100644
--- a/slixmpp/plugins/xep_0444/reactions.py
+++ b/slixmpp/plugins/xep_0444/reactions.py
@@ -38,7 +38,7 @@ class XEP_0444(BasePlugin):
def plugin_end(self):
self.xmpp.remove_handler('Reaction received')
- self.xmpp['xep_0030'].del_feature(stanza.NS)
+ self.xmpp['xep_0030'].del_feature(feature=stanza.NS)
def _handle_reactions(self, message: Message):
self.xmpp.event('reactions', message)
diff --git a/slixmpp/test/integration.py b/slixmpp/test/integration.py
index d15019cc..758ad239 100644
--- a/slixmpp/test/integration.py
+++ b/slixmpp/test/integration.py
@@ -53,7 +53,8 @@ class SlixIntegration(IsolatedAsyncioTestCase):
"""Connect all clients"""
for client in self.clients:
client.connect()
- await client.wait_until('session_start')
+ wait = [client.wait_until('session_start') for client in self.clients]
+ await asyncio.gather(*wait)
async def _destroy(self):
"""Kill all clients"""