Skip to content

Commit ab2f89f

Browse files
author
Lloyd Watkin
committed
Only allow owner unsubscribing from a node if there are more than 1 owner
1 parent 3a64569 commit ab2f89f

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/UnsubscribeSet.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@ public void process(Element elm, JID actorJID, IQ reqIQ, Element rsm)
108108
return;
109109
}
110110

111-
if (Affiliations.owner == existingAffiliation.getAffiliation()) {
111+
if ((Affiliations.owner == existingAffiliation.getAffiliation()) &&
112+
(channelManager.getNodeOwners(node).size() < 2)) {
113+
112114
response.setType(Type.error);
113115
PacketError pe = new PacketError(
114116
org.xmpp.packet.PacketError.Condition.not_allowed,

src/test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/UnsubscribeSetTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package src.test.java.org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.set;
22

3+
import java.util.ArrayList;
34
import java.util.Date;
45
import java.util.concurrent.BlockingQueue;
56
import java.util.concurrent.LinkedBlockingQueue;
@@ -66,12 +67,17 @@ public void setUp() throws Exception {
6667
@Test
6768
public void testCanNotUnsubscribeAsOnlyNodeOwner() throws Exception {
6869

70+
ArrayList<JID> owners = new ArrayList<JID>();
71+
owners.add(jid);
72+
6973
Mockito.when(
7074
channelManager.getUserSubscription(Mockito.anyString(),
7175
Mockito.any(JID.class))).thenReturn(subscription);
7276
Mockito.when(
7377
channelManager.getUserAffiliation(Mockito.anyString(),
7478
Mockito.any(JID.class))).thenReturn(affiliation);
79+
Mockito.when(channelManager.getNodeOwners(Mockito.anyString()))
80+
.thenReturn(owners);
7581

7682
unsubscribe.process(element, jid, request, null);
7783

@@ -83,9 +89,10 @@ public void testCanNotUnsubscribeAsOnlyNodeOwner() throws Exception {
8389

8490
PacketError error = response.getError();
8591
Assert.assertNotNull(error);
86-
92+
8793
Assert.assertEquals(PacketError.Type.cancel, error.getType());
88-
Assert.assertEquals(PacketError.Condition.not_allowed, error.getCondition());
94+
Assert.assertEquals(PacketError.Condition.not_allowed,
95+
error.getCondition());
8996

9097
}
9198

0 commit comments

Comments
 (0)