summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/end_to_end/__main__.py2
-rw-r--r--tests/end_to_end/functions.py6
-rw-r--r--tests/end_to_end/scenarios/channel_messages.py6
-rw-r--r--tests/end_to_end/scenarios/muc_disco_info.py1
-rw-r--r--tests/end_to_end/scenarios/multisessionnick.py10
-rw-r--r--tests/end_to_end/scenarios/stable_id.py32
6 files changed, 45 insertions, 12 deletions
diff --git a/tests/end_to_end/__main__.py b/tests/end_to_end/__main__.py
index cef554e..dcf154d 100644
--- a/tests/end_to_end/__main__.py
+++ b/tests/end_to_end/__main__.py
@@ -100,7 +100,7 @@ class XMPPComponent(slixmpp.BaseXMPP):
def on_timeout(self, xpaths):
error_msg = "Timeout while waiting for a stanza that would match the expected xpath(s):"
for xpath in xpaths:
- error_msg += "\n" + xpath
+ error_msg += "\n" + str(xpath)
self.error(error_msg)
self.run_scenario()
diff --git a/tests/end_to_end/functions.py b/tests/end_to_end/functions.py
index 97cdfb0..3a21fcf 100644
--- a/tests/end_to_end/functions.py
+++ b/tests/end_to_end/functions.py
@@ -18,10 +18,10 @@ common_replacements = {
'jid_one': 'first@example.com',
'jid_two': 'second@example.com',
'jid_admin': 'admin@example.com',
- 'nick_two': 'Bobby',
- 'nick_three': 'Bernard',
+ 'nick_two': 'Nick2',
+ 'nick_three': 'Nick3',
'lower_nick_one': 'nick',
- 'lower_nick_two': 'bobby',
+ 'lower_nick_two': 'nick2',
}
class SkipStepError(Exception):
diff --git a/tests/end_to_end/scenarios/channel_messages.py b/tests/end_to_end/scenarios/channel_messages.py
index cc358e1..e321114 100644
--- a/tests/end_to_end/scenarios/channel_messages.py
+++ b/tests/end_to_end/scenarios/channel_messages.py
@@ -21,15 +21,15 @@ scenario = (
),
# Send a channel message
- send_stanza("<message from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}' type='groupchat'><body>coucou</body></message>"),
+ send_stanza("<message id='first_id' from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}' type='groupchat'><body>coucou</body></message>"),
# Receive the message, forwarded to the two users
expect_unordered(
[
- "/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_one}'][@type='groupchat']/body[text()='coucou']",
+ "/message[@id='first_id'][@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_one}'][@type='groupchat']/body[text()='coucou']",
"/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]"
],
[
- "/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='coucou']",
+ "/message[@id][@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='coucou']",
"/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]"
]
),
diff --git a/tests/end_to_end/scenarios/muc_disco_info.py b/tests/end_to_end/scenarios/muc_disco_info.py
index 0c1aea5..36fdbc6 100644
--- a/tests/end_to_end/scenarios/muc_disco_info.py
+++ b/tests/end_to_end/scenarios/muc_disco_info.py
@@ -10,6 +10,7 @@ scenario = (
"/iq/disco_info:query/disco_info:feature[@var='urn:xmpp:mam:2']",
"/iq/disco_info:query/disco_info:feature[@var='jabber:iq:version']",
"/iq/disco_info:query/disco_info:feature[@var='muc_nonanonymous']",
+ "/iq/disco_info:query/disco_info:feature[@var='urn:xmpp:sid:0']",
"!/iq/disco_info:query/dataform:x/dataform:field[@var='muc#roominfo_occupants']"),
# Join the channel, and re-do the same query
diff --git a/tests/end_to_end/scenarios/multisessionnick.py b/tests/end_to_end/scenarios/multisessionnick.py
index f47b18e..761e66e 100644
--- a/tests/end_to_end/scenarios/multisessionnick.py
+++ b/tests/end_to_end/scenarios/multisessionnick.py
@@ -70,8 +70,8 @@ scenario = (
# First occupant (with the two resources) changes her/his nick to a conflicting one
send_stanza("<presence from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}/{nick_two}' />"),
expect_unordered(
- ["/message[@to='{jid_one}/{resource_one}'][@type='chat']/body[text()='irc.localhost: Bobby: Nickname is already in use.']"],
- ["/message[@to='{jid_one}/{resource_two}'][@type='chat']/body[text()='irc.localhost: Bobby: Nickname is already in use.']"],
+ ["/message[@to='{jid_one}/{resource_one}'][@type='chat']/body[text()='irc.localhost: Nick2: Nickname is already in use.']"],
+ ["/message[@to='{jid_one}/{resource_two}'][@type='chat']/body[text()='irc.localhost: Nick2: Nickname is already in use.']"],
["/presence[@to='{jid_one}/{resource_one}'][@from='#foo%{irc_server_one}/{nick_two}'][@type='error']"],
["/presence[@to='{jid_one}/{resource_two}'][@from='#foo%{irc_server_one}/{nick_two}'][@type='error']"]
),
@@ -80,14 +80,14 @@ scenario = (
send_stanza("<presence from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}/{nick_three}' />"),
expect_unordered(
[
- "/presence[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='unavailable']/muc_user:x/muc_user:item[@nick='Bernard']",
+ "/presence[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='unavailable']/muc_user:x/muc_user:item[@nick='Nick3']",
"/presence/muc_user:x/muc_user:status[@code='303']"
],
[
"/presence[@from='#foo%{irc_server_one}/{nick_three}'][@to='{jid_two}/{resource_one}']"
],
[
- "/presence[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_one}'][@type='unavailable']/muc_user:x/muc_user:item[@nick='Bernard']",
+ "/presence[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_one}'][@type='unavailable']/muc_user:x/muc_user:item[@nick='Nick3']",
"/presence/muc_user:x/muc_user:status[@code='303']",
"/presence/muc_user:x/muc_user:status[@code='110']"
],
@@ -96,7 +96,7 @@ scenario = (
"/presence/muc_user:x/muc_user:status[@code='110']"
],
[
- "/presence[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_two}'][@type='unavailable']/muc_user:x/muc_user:item[@nick='Bernard']",
+ "/presence[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_two}'][@type='unavailable']/muc_user:x/muc_user:item[@nick='Nick3']",
"/presence/muc_user:x/muc_user:status[@code='303']",
"/presence/muc_user:x/muc_user:status[@code='110']"
],
diff --git a/tests/end_to_end/scenarios/stable_id.py b/tests/end_to_end/scenarios/stable_id.py
new file mode 100644
index 0000000..9f3181b
--- /dev/null
+++ b/tests/end_to_end/scenarios/stable_id.py
@@ -0,0 +1,32 @@
+from scenarios import *
+
+import scenarios.simple_channel_join
+
+# see https://xmpp.org/extensions/xep-0359.html
+
+scenario = (
+ scenarios.simple_channel_join.scenario,
+
+ send_stanza("""<message id='first_id' from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}' type='groupchat'>
+ <origin-id xmlns='urn:xmpp:sid:0' id='client-origin-id-should-be-kept'/>
+ <stanza-id xmlns='urn:xmpp:sid:0' id='client-stanza-id-should-be-removed' by='#foo%{irc_server_one}'/>
+ <stanza-id xmlns='urn:xmpp:sid:0' id='client-stanza-id-should-be-kept' by='someother@jid'/>
+ <body>coucou</body></message>"""),
+
+ # Entities, which are routing stanzas, SHOULD NOT strip any elements
+ # qualified by the 'urn:xmpp:sid:0' namespace from message stanzas
+ # unless the preceding rule applied to those elements.
+ expect_stanza("/message/stable_id:origin-id[@id='client-origin-id-should-be-kept']",
+ # Stanza ID generating entities, which encounter a <stanza-id/>
+ # element where the 'by' attribute matches the 'by' attribute they
+ # would otherwise set, MUST delete that element even if they are not
+ # adding their own stanza ID.
+ "/message/stable_id:stanza-id[@id][@by='#foo%{irc_server_one}']",
+ "!/message/stable_id:stanza-id[@id='client-stanza-id-should-be-removed']",
+ # Entities, which are routing stanzas, SHOULD NOT strip
+ # any elements qualified by the 'urn:xmpp:sid:0'
+ # namespace from message stanzas unless the preceding
+ # rule applied to those elements.
+ "/message/stable_id:stanza-id[@id='client-stanza-id-should-be-kept'][@by='someother@jid']",
+ ),
+)