Diff

mod_auto_moved/tests/moved.scs @ 4679:f95a1e197a07

mod_auto_moved: New module implementing XEP-0283 r0.2.0
author Matthew Wild <mwild1@gmail.com>
date Sun, 12 Sep 2021 18:49:56 +0100
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_auto_moved/tests/moved.scs	Sun Sep 12 18:49:56 2021 +0100
@@ -0,0 +1,184 @@
+# XEP-0283: Moved
+
+[Client] Romeo
+	jid: romeo1@localhost
+	password: password
+
+[Client] RomeoNew
+	jid: romeo.new@localhost
+	password: password
+
+[Client] Juliet
+	jid: juliet.m@localhost
+	password: password
+
+-----
+
+# The parties connect
+Romeo connects
+
+Romeo sends:
+	<presence/>
+
+Romeo receives:
+	<presence from="${Romeo's full JID}"/>
+
+Juliet connects
+
+Juliet sends:
+	<presence/>
+
+Juliet receives:
+	<presence from="${Juliet's full JID}"/>
+
+RomeoNew connects
+
+RomeoNew sends:
+	<presence/>
+
+RomeoNew receives:
+	<presence from="${RomeoNew's full JID}"/>
+
+# They add each other
+Romeo sends:
+	<presence type="subscribe" to="${Juliet's JID}"/>
+
+Romeo receives:
+	<presence from="${Juliet's JID}" to="${Romeo's JID}" type="unavailable"/>
+
+Juliet receives:
+	<presence type="subscribe" to="${Juliet's JID}" from="${Romeo's JID}"/>
+
+Juliet sends:
+	<presence type="subscribed" to="${Romeo's JID}"/>
+
+Romeo receives:
+	<presence from="${Juliet's full JID}" to="${Romeo's JID}">
+	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
+	</presence>
+
+Juliet sends:
+	<presence type="subscribe" to="${Romeo's JID}"/>
+
+Juliet receives:
+	<presence from="${Romeo's JID}" to="${Juliet's JID}" type="unavailable"/>
+
+Romeo receives:
+	<presence type="subscribe" to="${Romeo's JID}" from="${Juliet's JID}"/>
+
+Romeo sends:
+	<presence type="subscribed" to="${Juliet's JID}"/>
+
+Juliet receives:
+	<presence from="${Romeo's full JID}" to="${Juliet's JID}">
+	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
+	</presence>
+
+Romeo receives:
+	<presence from="${Juliet's full JID}" to="${Romeo's JID}">
+	  <delay xmlns="urn:xmpp:delay" stamp="{scansion:any}" from="localhost"/>
+	</presence>
+
+# They request their rosters
+
+Juliet sends:
+	<iq type="get" id="roster1">
+		<query xmlns='jabber:iq:roster'/>
+	</iq>
+
+Juliet receives:
+	<iq type="result" id="roster1"/>
+
+RomeoNew sends:
+	<iq type="get" id="roster1">
+		<query xmlns='jabber:iq:roster'/>
+	</iq>
+
+RomeoNew receives:
+	<iq type="result" id="roster1"/>
+
+# They can now talk
+Juliet sends:
+	<message type="chat" to="${Romeo's JID}">
+	  <body>ohai</body>
+	</message>
+
+Romeo receives:
+	<message type="chat" to="${Romeo's JID}" from="${Juliet's full JID}">
+	  <body>ohai</body>
+	</message>
+
+# Romeo moves to a new account
+
+# Romeo publishes a moved statement
+
+Romeo sends:
+	<iq type='set' id='pub1'>
+		<pubsub xmlns='http://jabber.org/protocol/pubsub'>
+			<publish node='urn:xmpp:moved:1'>
+				<item id='current'>
+					<moved xmlns='urn:xmpp:moved:1'>
+						<new-jid>${RomeoNew's JID}</new-jid>
+					</moved>
+				</item>
+			</publish>
+			<publish-options>
+				<x xmlns='jabber:x:data' type='submit'>
+					<field var='FORM_TYPE' type='hidden'>
+						<value>http://jabber.org/protocol/pubsub#publish-options</value>
+					</field>
+					<field var='pubsub#access_model'>
+						<value>open</value>
+					</field>
+				</x>
+			</publish-options>
+		</pubsub>
+	</iq>
+
+Romeo receives:
+	<iq type="result" id="pub1">
+		<pubsub xmlns='http://jabber.org/protocol/pubsub'>
+			<publish node='urn:xmpp:moved:1'>
+				<item id='current'/>
+			</publish>
+		</pubsub>
+	</iq>
+
+
+
+# RomeoNew sends moved notification to Juliet
+RomeoNew sends:
+	<presence type="subscribe" to="${Juliet's JID}">
+		<moved xmlns="urn:xmpp:moved:1">
+			<old-jid>${Romeo's JID}</old-jid>
+		</moved>
+	</presence>
+
+RomeoNew receives:
+	<iq type='set' id="{scansion:any}">
+		<query ver="{scansion:any}" xmlns='jabber:iq:roster'>
+			<item jid="${Juliet's JID}" subscription='none' ask='subscribe'/>
+		</query>
+	</iq>
+
+# Juliet's server verifies and approves the subscription request
+
+RomeoNew receives:
+	<presence type="subscribed" from="${Juliet's JID}"/>
+
+RomeoNew receives:
+	<iq type='set' id="{scansion:any}">
+		<query ver="{scansion:any}" xmlns='jabber:iq:roster'>
+			<item jid="${Juliet's JID}" subscription='to' />
+		</query>
+	</iq>
+
+# Juliet's server notifies her via a roster push
+
+Juliet receives:
+	<iq type="set" id="{scansion:any}">
+		<query xmlns='jabber:iq:roster' ver='{scansion:any}'>
+			<item jid="${RomeoNew's JID}" subscription='from'/>
+		</query>
+	</iq>
+