From 1e2c3cdc46cc817532b3ffcce1e460695e9361d7 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 20 Jun 2019 21:08:12 +0200 Subject: mod_blocklist: Add test case capturing current behavior --- spec/scansion/blocking.scs | 162 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 spec/scansion/blocking.scs diff --git a/spec/scansion/blocking.scs b/spec/scansion/blocking.scs new file mode 100644 index 00000000..5f4c8cba --- /dev/null +++ b/spec/scansion/blocking.scs @@ -0,0 +1,162 @@ +# XEP-0191: Blocking Command + +[Client] Romeo + jid: blocker@localhost + password: password + +[Client] Juliet + jid: blockee@localhost + password: password + +----- + +# The parties connect +Romeo connects + +Romeo sends: + + +Romeo receives: + + + + +Juliet connects + +Juliet sends: + + +Juliet receives: + + + + +# They add each other +Romeo sends: + + +Romeo receives: + + +Juliet receives: + + +Juliet sends: + + +Romeo receives: + + + + + +Juliet sends: + + +Juliet receives: + + +Romeo receives: + + +Romeo sends: + + +Juliet receives: + + + + + +Romeo receives: + + + + + +# They can now talk +Juliet sends: + + ohai + + +Romeo receives: + + ohai + + +# And now to the blockining + +Romeo sends: + + + + + + +Romeo receives: + + +Juliet receives: + + +# Can"t talk anymore +Romeo sends: + + hello? + + +Romeo receives: + + + + You have blocked this JID + + + + +Juliet sends: + + +Juliet receives: + + + + + + +Romeo sends: + + + + + + +Romeo receives: + + +# Can talk again +Romeo sends: + + hello! + + +Juliet receives: + + hello! + + +# Bye +Juliet disconnects + +Juliet sends: + + +Romeo receives: + + +Romeo disconnects + +Romeo sends: + + -- cgit v1.2.3 From 2ab9c22c2658d38345fc69705c2e2b60cb6fc348 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 20 Jun 2019 21:18:46 +0200 Subject: mod_blocklist: Update test case with correct behavior (see #1380) Expect failure --- spec/scansion/blocking.scs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spec/scansion/blocking.scs b/spec/scansion/blocking.scs index 5f4c8cba..809bbcb5 100644 --- a/spec/scansion/blocking.scs +++ b/spec/scansion/blocking.scs @@ -132,6 +132,12 @@ Romeo sends: +Juliet receives: + + + + + Romeo receives: -- cgit v1.2.3 From 1f827c7df8f18fed7243c58dfe854b5251ae866d Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 20 Jun 2019 21:20:00 +0200 Subject: mod_blocklist: Trigger resend of presence when unblocking a contact (fixes #1380) --- plugins/mod_blocklist.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/mod_blocklist.lua b/plugins/mod_blocklist.lua index 8aca7332..ee48ffad 100644 --- a/plugins/mod_blocklist.lua +++ b/plugins/mod_blocklist.lua @@ -128,6 +128,7 @@ local function edit_blocklist(event) -- > only if the contact is allowed to receive presence notifications [...] -- So contacts we need to do that for are added to the set below. local send_unavailable = is_blocking and {}; + local send_available = not is_blocking and {}; -- Because blocking someone currently also blocks the ability to reject -- subscription requests, we'll preemptively reject such @@ -147,6 +148,8 @@ local function edit_blocklist(event) elseif is_contact_pending_in(username, module.host, jid) then remove_pending[jid] = true; end + elseif is_contact_subscribed(username, module.host, jid) then + send_available[jid] = true; end end @@ -203,6 +206,11 @@ local function edit_blocklist(event) save_roster(username, module.host, roster); -- Not much we can do about save failing here end + else + local user_bare = username .. "@" .. module.host; + for jid in pairs(send_available) do + module:send(st.presence({ type = "probe", to = user_bare, from = jid })); + end end local blocklist_push = st.iq({ type = "set", id = "blocklist-push" }) -- cgit v1.2.3