File

spec/scansion/pubsub_resend_on_sub.scs @ 13144:033ea8b46d6a

mod_storage_sql: Compose a keyval+ store out of keyval and map store methods Removes the need for the shim in storagemanager. The methods only really access the 'store' property of the first (self) argument, so this is safe.
author Kim Alvefur <zash@zash.se>
date Sat, 10 Jun 2023 16:39:48 +0200
parent 11854:b605cbd5f13b
line wrap: on
line source

# Pubsub: Send last item on subscribe #1436

[Client] Romeo
	jid: admin@localhost
	password: password

// admin@localhost is assumed to have node creation privileges

[Client] Juliet
	jid: juliet@localhost
	password: password

---------

Romeo connects

Romeo sends:
	<iq type="set" to="pubsub.localhost" id='create1'>
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
			<create node="princely_musings"/>
		</pubsub>
	</iq>

Romeo receives:
	<iq type="result" id='create1'/>

Romeo sends:
	<iq to="pubsub.localhost" id="config-never" type="set">
		<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
			<configure node="princely_musings">
				<x xmlns="jabber:x:data" type="submit">
					<field var="FORM_TYPE" type="hidden">
						<value>http://jabber.org/protocol/pubsub#node_config</value>
					</field>
					<field type='list-single' var='pubsub#send_last_published_item'>
						<value>never</value>
					</field>
				</x>
			</configure>
		</pubsub>
	</iq>

Romeo receives:
	<iq from="pubsub.localhost" id="config-never" type="result"/>

Romeo sends:
	<iq type="set" to="pubsub.localhost" id='pub1'>
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
			<publish node="princely_musings">
				<item id="current">
					<entry xmlns="http://www.w3.org/2005/Atom">
						<title>Soliloquy</title>
						<summary>Lorem ipsum dolor sit amet</summary>
					</entry>
				</item>
			</publish>
		</pubsub>
	</iq>

Romeo receives:
	<iq type="result" id='pub1'/>

Juliet connects

Juliet sends:
	<iq type="set" to="pubsub.localhost" id='sub1'>
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
			<subscribe node="princely_musings" jid="${Juliet's full JID}"/>
		</pubsub>
	</iq>

Juliet receives:
	<iq type="result" id='sub1'/>

Juliet sends:
	<iq type="set" to="pubsub.localhost" id='unsub1'>
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
			<unsubscribe node="princely_musings" jid="${Juliet's full JID}"/>
		</pubsub>
	</iq>

Juliet receives:
	<iq type="result" id='unsub1'/>

Romeo sends:
	<iq to="pubsub.localhost" id="config-on_sub" type="set">
		<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
			<configure node="princely_musings">
				<x xmlns="jabber:x:data" type="submit">
					<field var="FORM_TYPE" type="hidden">
						<value>http://jabber.org/protocol/pubsub#node_config</value>
					</field>
					<field type='list-single' var='pubsub#send_last_published_item'>
						<value>on_sub</value>
					</field>
				</x>
			</configure>
		</pubsub>
	</iq>

Romeo receives:
	<iq from="pubsub.localhost" id="config-on_sub" type="result"/>

Juliet sends:
	<iq type="set" to="pubsub.localhost" id='sub2'>
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
			<subscribe node="princely_musings" jid="${Juliet's full JID}"/>
		</pubsub>
	</iq>

Juliet receives:
	<iq type="result" id='sub2'/>

Juliet receives:
	<message type="headline" from="pubsub.localhost">
		<event xmlns="http://jabber.org/protocol/pubsub#event">
			<items node="princely_musings">
				<item id="current" publisher="${Romeo's JID}">
					<entry xmlns="http://www.w3.org/2005/Atom">
						<title>Soliloquy</title>
						<summary>Lorem ipsum dolor sit amet</summary>
					</entry>
				</item>
			</items>
		</event>
	</message>

Juliet sends:
	<iq type="set" to="pubsub.localhost" id='unsub2'>
		<pubsub xmlns="http://jabber.org/protocol/pubsub">
			<unsubscribe node="princely_musings" jid="${Juliet's full JID}"/>
		</pubsub>
	</iq>

Juliet receives:
	<iq type="result" id='unsub2'/>

Juliet disconnects

Romeo sends:
	<iq type="set" to="pubsub.localhost" id='del1'>
		<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
			<delete node="princely_musings"/>
		</pubsub>
	</iq>

Romeo receives:
	<iq type="result" id='del1'/>

Romeo disconnects

// vim: syntax=xml: