From fdb0749cd14ea9480687d5e243ec8fc81731e4dd Mon Sep 17 00:00:00 2001
From: mathieui <mathieui@mathieui.net>
Date: Fri, 4 Dec 2020 18:45:06 +0100
Subject: XEP-0422,0424,0425,0439: Add basic stanza tests

---
 tests/test_stanza_xep_0422.py | 33 +++++++++++++++++++++++++
 tests/test_stanza_xep_0424.py | 39 +++++++++++++++++++++++++++++
 tests/test_stanza_xep_0425.py | 47 +++++++++++++++++++++++++++++++++++
 tests/test_stanza_xep_0439.py | 57 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 176 insertions(+)
 create mode 100644 tests/test_stanza_xep_0422.py
 create mode 100644 tests/test_stanza_xep_0424.py
 create mode 100644 tests/test_stanza_xep_0425.py
 create mode 100644 tests/test_stanza_xep_0439.py

(limited to 'tests')

diff --git a/tests/test_stanza_xep_0422.py b/tests/test_stanza_xep_0422.py
new file mode 100644
index 00000000..9d2cc396
--- /dev/null
+++ b/tests/test_stanza_xep_0422.py
@@ -0,0 +1,33 @@
+import unittest
+from slixmpp import Message
+from slixmpp.test import SlixTest
+from slixmpp.xmlstream import ET
+from slixmpp.plugins.xep_0422 import stanza
+
+
+class TestFastening(SlixTest):
+
+    def setUp(self):
+        stanza.register_plugins()
+
+    def testFastenExternal(self):
+        message = Message()
+        message['apply_to']['id'] = 'some-id'
+        message['apply_to'].xml.append(
+            ET.fromstring('<test xmlns="urn:tmp:test">Test</test>')
+        )
+        message['apply_to']['external']['name'] = 'body'
+        message['body'] = 'Toto'
+
+        self.check(message, """
+<message>
+  <apply-to xmlns="urn:xmpp:fasten:0" id="some-id">
+      <test xmlns="urn:tmp:test">Test</test>
+      <external name='body'/>
+  </apply-to>
+  <body>Toto</body>
+</message>
+        """, use_values=False)
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestFastening)
diff --git a/tests/test_stanza_xep_0424.py b/tests/test_stanza_xep_0424.py
new file mode 100644
index 00000000..c94ed79b
--- /dev/null
+++ b/tests/test_stanza_xep_0424.py
@@ -0,0 +1,39 @@
+import unittest
+from slixmpp import Message
+from slixmpp.test import SlixTest
+from slixmpp.plugins.xep_0424 import stanza
+
+
+class TestRetraction(SlixTest):
+
+    def setUp(self):
+        stanza.register_plugins()
+
+    def testRetract(self):
+        message = Message()
+        message['apply_to']['id'] = 'some-id'
+        message['apply_to']['retract']
+
+        self.check(message, """
+<message>
+  <apply-to xmlns="urn:xmpp:fasten:0" id="some-id">
+      <retract xmlns="urn:xmpp:message-retract:0"/>
+  </apply-to>
+</message>
+        """, use_values=False)
+
+    def testRetracted(self):
+        message = Message()
+        message['retracted']['stamp'] = '2019-09-20T23:09:32Z'
+        message['retracted']['origin_id']['id'] = 'originid'
+
+        self.check(message, """
+<message>
+  <retracted stamp="2019-09-20T23:09:32Z" xmlns="urn:xmpp:message-retract:0">
+    <origin-id xmlns="urn:xmpp:sid:0" id="originid"/>
+  </retracted>
+</message>
+        """)
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestRetraction)
diff --git a/tests/test_stanza_xep_0425.py b/tests/test_stanza_xep_0425.py
new file mode 100644
index 00000000..96d979e8
--- /dev/null
+++ b/tests/test_stanza_xep_0425.py
@@ -0,0 +1,47 @@
+import unittest
+from slixmpp import Message, Iq, JID
+from slixmpp.test import SlixTest
+from slixmpp.plugins.xep_0425 import stanza
+
+
+class TestModeration(SlixTest):
+
+    def setUp(self):
+        stanza.register_plugins()
+
+    def testModerate(self):
+        iq = Iq()
+        iq['type'] = 'set'
+        iq['id'] = 'a'
+        iq['apply_to']['id'] = 'some-id'
+        iq['apply_to']['moderate'].enable('retract')
+        iq['apply_to']['moderate']['reason'] = 'R'
+
+        self.check(iq, """
+<iq type='set' id='a'>
+  <apply-to id="some-id" xmlns="urn:xmpp:fasten:0">
+    <moderate xmlns='urn:xmpp:message-moderate:0'>
+      <retract xmlns='urn:xmpp:message-retract:0'/>
+      <reason>R</reason>
+    </moderate>
+  </apply-to>
+</iq>
+        """, use_values=False)
+
+    def testModerated(self):
+        message = Message()
+        message['moderated']['by'] = JID('toto@titi')
+        message['moderated']['retracted']['stamp'] = '2019-09-20T23:09:32Z'
+        message['moderated']['reason'] = 'R'
+
+        self.check(message, """
+<message>
+  <moderated xmlns="urn:xmpp:message-moderate:0" by="toto@titi">
+    <retracted stamp="2019-09-20T23:09:32Z" xmlns="urn:xmpp:message-retract:0" />
+    <reason>R</reason>
+  </moderated>
+</message>
+        """)
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestModeration)
diff --git a/tests/test_stanza_xep_0439.py b/tests/test_stanza_xep_0439.py
new file mode 100644
index 00000000..fbd3aa47
--- /dev/null
+++ b/tests/test_stanza_xep_0439.py
@@ -0,0 +1,57 @@
+import unittest
+from slixmpp import Message
+from slixmpp.test import SlixTest
+from slixmpp.plugins.xep_0439 import stanza
+
+
+class TestQuickResponse(SlixTest):
+
+    def setUp(self):
+        stanza.register_plugins()
+
+    def testResponse(self):
+        message = Message()
+        message['body'] = 'Reply 1 or 2?'
+        for (value, label) in [('1', 'Rep 1'), ('2', 'Rep 2')]:
+            rep = stanza.Response()
+            rep['value'] = value
+            rep['label'] = label
+            message.append(rep)
+
+        self.check(message, """
+<message>
+  <body>Reply 1 or 2?</body>
+  <response xmlns="urn:xmpp:tmp:quick-response" value="1" label="Rep 1" />
+  <response xmlns="urn:xmpp:tmp:quick-response" value="2" label="Rep 2" />
+</message>
+        """, use_values=False)
+
+    def testAction(self):
+        message = Message()
+        message['body'] = 'action 1 or 2?'
+        for (id_, label) in [('1', 'action 1'), ('2', 'action 2')]:
+            act = stanza.Action()
+            act['id'] = id_
+            act['label'] = label
+            message.append(act)
+
+        self.check(message, """
+<message>
+  <body>action 1 or 2?</body>
+  <action xmlns="urn:xmpp:tmp:quick-response" id="1" label="action 1" />
+  <action xmlns="urn:xmpp:tmp:quick-response" id="2" label="action 2" />
+</message>
+        """, use_values=False)
+
+    def testActionSelected(self):
+        message = Message()
+        message['action_selected']['id'] = 'act1'
+
+        self.check(message, """
+<message>
+  <action-selected xmlns="urn:xmpp:tmp:quick-response" id="act1" />
+</message>
+        """, use_values=False)
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestQuickResponse)
-- 
cgit v1.2.3