diff options
author | Kim Alvefur <zash@zash.se> | 2021-10-19 18:11:50 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2021-10-19 18:11:50 +0200 |
commit | 4b05d0f2402475fea608fd3e48a96364bc6da4f2 (patch) | |
tree | 8553f7e8e4b57c64b2599666f87b5e3ca14cc0b7 /spec | |
parent | 3e55057a8574af83e42ec96041283111e34ef7d4 (diff) | |
download | prosody-4b05d0f2402475fea608fd3e48a96364bc6da4f2.tar.gz prosody-4b05d0f2402475fea608fd3e48a96364bc6da4f2.zip |
mod_pubsub,mod_pep: Implement 'send_last_published_item' option #1436
Default left as 'never' in mod_pubsub to preserve the previous behavior.
Unclear if this is desirable, but can always be changed later.
In mod_pep this allows turning off the automatic resending of most
recent item.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/scansion/pubsub_config.scs | 15 | ||||
-rw-r--r-- | spec/scansion/pubsub_max_items.scs | 12 | ||||
-rw-r--r-- | spec/scansion/pubsub_multi_items.scs | 12 | ||||
-rw-r--r-- | spec/scansion/pubsub_preconditions.scs | 15 | ||||
-rw-r--r-- | spec/scansion/pubsub_resend_on_sub.scs | 152 |
5 files changed, 206 insertions, 0 deletions
diff --git a/spec/scansion/pubsub_config.scs b/spec/scansion/pubsub_config.scs index 2cad9115..28505f28 100644 --- a/spec/scansion/pubsub_config.scs +++ b/spec/scansion/pubsub_config.scs @@ -84,6 +84,18 @@ Romeo receives: </option> <value>publishers</value> </field> + <field type='list-single' var='pubsub#send_last_published_item'> + <option label='never'> + <value>never</value> + </option> + <option label='on_sub'> + <value>on_sub</value> + </option> + <option label='on_sub_and_presence'> + <value>on_sub_and_presence</value> + </option> + <value>on_sub_and_presence</value> + </field> <field var="pubsub#deliver_notifications" label="Whether to deliver event notifications" type="boolean"> <value>1</value> </field> @@ -160,6 +172,9 @@ Romeo sends: </option> <value>publishers</value> </field> + <field type='list-single' var='pubsub#send_last_published_item'> + <value>never</value> + </field> <field var="pubsub#deliver_notifications" type="boolean" label="Whether to deliver event notifications"> <value>1</value> </field> diff --git a/spec/scansion/pubsub_max_items.scs b/spec/scansion/pubsub_max_items.scs index 7f0b531d..dafeb317 100644 --- a/spec/scansion/pubsub_max_items.scs +++ b/spec/scansion/pubsub_max_items.scs @@ -79,6 +79,18 @@ Alice receives: </option> <value>publishers</value> </field> + <field type='list-single' var='pubsub#send_last_published_item'> + <option label='never'> + <value>never</value> + </option> + <option label='on_sub'> + <value>on_sub</value> + </option> + <option label='on_sub_and_presence'> + <value>on_sub_and_presence</value> + </option> + <value>never</value> + </field> <field var="pubsub#deliver_notifications" label="Whether to deliver event notifications" type="boolean"> <value>1</value> </field> diff --git a/spec/scansion/pubsub_multi_items.scs b/spec/scansion/pubsub_multi_items.scs index 331093ca..d4f2e01b 100644 --- a/spec/scansion/pubsub_multi_items.scs +++ b/spec/scansion/pubsub_multi_items.scs @@ -79,6 +79,18 @@ Alice receives: </option> <value>publishers</value> </field> + <field type='list-single' var='pubsub#send_last_published_item'> + <option label='never'> + <value>never</value> + </option> + <option label='on_sub'> + <value>on_sub</value> + </option> + <option label='on_sub_and_presence'> + <value>on_sub_and_presence</value> + </option> + <value>never</value> + </field> <field var="pubsub#deliver_notifications" label="Whether to deliver event notifications" type="boolean"> <value>1</value> </field> diff --git a/spec/scansion/pubsub_preconditions.scs b/spec/scansion/pubsub_preconditions.scs index 7e4e593b..744070db 100644 --- a/spec/scansion/pubsub_preconditions.scs +++ b/spec/scansion/pubsub_preconditions.scs @@ -83,6 +83,18 @@ Romeo receives: </option> <value>publishers</value> </field> + <field type='list-single' var='pubsub#send_last_published_item'> + <option label='never'> + <value>never</value> + </option> + <option label='on_sub'> + <value>on_sub</value> + </option> + <option label='on_sub_and_presence'> + <value>on_sub_and_presence</value> + </option> + <value>on_sub_and_presence</value> + </field> <field var="pubsub#deliver_notifications" label="Whether to deliver event notifications" type="boolean"> <value>1</value> </field> @@ -159,6 +171,9 @@ Romeo sends: </option> <value>publishers</value> </field> + <field type='list-single' var='pubsub#send_last_published_item'> + <value>never</value> + </field> <field var="pubsub#deliver_notifications" type="boolean" label="Whether to deliver event notifications"> <value>1</value> </field> diff --git a/spec/scansion/pubsub_resend_on_sub.scs b/spec/scansion/pubsub_resend_on_sub.scs new file mode 100644 index 00000000..cfce8934 --- /dev/null +++ b/spec/scansion/pubsub_resend_on_sub.scs @@ -0,0 +1,152 @@ +# 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: |