import unittest.mock from slixmpp.test import SlixTest # from slixmpp.plugins import xep_0490 class TestMessageDisplaySynchronization(SlixTest): def setUp(self): self.stream_start(jid="juliet@capulet.lit", plugins={"xep_0490"}) def test_catch_up(self): future = self.xmpp.plugin["xep_0490"].catch_up() self.send( # language=XML """ """ ) self.recv( # language=XML """ """ ) iq = future.result() item = list(iq["pubsub"]["items"]) self.assertEqual(item[0]["id"], "romeo@montegue.lit") self.assertEqual( item[0]["displayed"]["stanza_id"]["id"], "0f710f2b-52ed-4d52-b928-784dad74a52b", ) self.assertEqual(item[1]["id"], "example@conference.shakespeare.lit") self.assertEqual( item[1]["displayed"]["stanza_id"]["id"], "ca21deaf-812c-48f1-8f16-339a674f2864", ) def test_flag_chat(self): self.xmpp.plugin["xep_0490"].flag_chat( "romeo@montegue.lit", "0f710f2b-52ed-4d52-b928-784dad74a52b" ) self.send( # language=XML """ http://jabber.org/protocol/pubsub#publish-options 1 max never whitelist """, use_values=False, ) def test_notification(self): handler = unittest.mock.Mock() self.xmpp.add_event_handler( "message_displayed_synchronization_publish", handler ) self.recv( # language=XML """ """ ) handler.assert_called() msg = handler.call_args[0][0] self.assertEqual( msg["pubsub_event"]["items"]["item"]["id"], "romeo@montegue.lit" ) self.assertEqual( msg["pubsub_event"]["items"]["item"]["displayed"]["stanza_id"]["id"], "0423e3a9-d516-493d-bb06-bee0e51ab9fb", ) suite = unittest.TestLoader().loadTestsFromTestCase(TestMessageDisplaySynchronization)