Skip to content

Commit 452bd52

Browse files
author
Lloyd Watkin
committed
Fix setting of default affiliation (or falling back on 'member') on node subscriptions
1 parent 968a9b7 commit 452bd52

File tree

2 files changed

+49
-7
lines changed
  • src
    • main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set
    • test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set

2 files changed

+49
-7
lines changed

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ public void process(Element elm, JID actorJID, IQ reqIQ, Element rsm)
126126
return;
127127
}
128128

129-
Affiliations defaultAffiliation = null;
130-
Subscriptions defaultSubscription = null;
129+
Affiliations defaultAffiliation = Affiliations.member;
130+
Subscriptions defaultSubscription = Subscriptions.none;
131131

132132
if (!possibleExistingSubscription.in(Subscriptions.none) &&
133133
!possibleExistingAffiliation.in(Affiliations.none)) {
@@ -138,16 +138,17 @@ public void process(Element elm, JID actorJID, IQ reqIQ, Element rsm)
138138
defaultSubscription = possibleExistingSubscription;
139139
} else {
140140
try {
141-
String nodeDefAffiliation = nodeConf.get(Conf.DEFAULT_AFFILIATION);
142-
LOGGER.debug("Node default affiliation: '" + nodeDefAffiliation + "'");
143-
defaultAffiliation = Affiliations.createFromString(nodeDefAffiliation);
141+
String nodeDefaultAffiliation = nodeConf.get(Conf.DEFAULT_AFFILIATION);
142+
LOGGER.debug("Node default affiliation: '" + nodeDefaultAffiliation + "'");
143+
if (!Affiliations.none.equals(Affiliations.createFromString(nodeDefaultAffiliation))) {
144+
defaultAffiliation = Affiliations.createFromString(nodeDefaultAffiliation);
145+
}
144146
} catch (NullPointerException e) {
145147
LOGGER.error("Could not create affiliation.", e);
146148
defaultAffiliation = Affiliations.member;
147149
}
148150
defaultSubscription = Subscriptions.subscribed;
149151
String accessModel = nodeConf.get(Conf.ACCESS_MODEL);
150-
151152
if ((null == accessModel)
152153
|| (true == accessModel.equals(AccessModels.authorize
153154
.toString()))

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

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ public void setUp() throws Exception {
8686
Affiliations.member, new Date()));
8787

8888
Mockito.doReturn(new ResultSetImpl<NodeAffiliation>(affiliations))
89-
.when(channelManager).getNodeAffiliations(Mockito.anyString(), Mockito.anyBoolean());
89+
.when(channelManager)
90+
.getNodeAffiliations(Mockito.anyString(), Mockito.anyBoolean());
9091

9192
ArrayList<NodeSubscription> subscribers = new ArrayList<NodeSubscription>();
9293
subscribers.add(new NodeSubscriptionImpl(node, jid,
@@ -229,4 +230,44 @@ public void testRemoteUserGetsPendingSubscriptionToLocalAccessModelNode()
229230

230231
}
231232

233+
@Test
234+
public void testNoDefaultAffiliationConfigurationResultsInMemberAffiliation()
235+
throws Exception {
236+
237+
Mockito.when(channelManager.getNodeConf(Mockito.anyString()))
238+
.thenReturn(new HashMap<String, String>());
239+
240+
subscribe.process(element, new JID("[email protected]"), request,
241+
null);
242+
243+
Mockito.verify(channelManager).setUserAffiliation(Mockito.anyString(),
244+
Mockito.any(JID.class), Mockito.eq(Affiliations.member));
245+
246+
IQ response = (IQ) queue.poll();
247+
Assert.assertEquals(IQ.Type.result, response.getType());
248+
249+
}
250+
251+
@Test
252+
public void testDefaultAffiliationConfigurationResultsInCorrectAffiliation()
253+
throws Exception {
254+
255+
Map<String, String> configuration = new HashMap<String, String>();
256+
configuration.put(Conf.ACCESS_MODEL, AccessModel.open.toString());
257+
configuration.put(Conf.DEFAULT_AFFILIATION,
258+
Affiliations.publisher.toString());
259+
Mockito.when(channelManager.getNodeConf(Mockito.anyString()))
260+
.thenReturn(configuration);
261+
262+
subscribe.process(element, new JID("[email protected]"), request,
263+
null);
264+
265+
Mockito.verify(channelManager).setUserAffiliation(Mockito.anyString(),
266+
Mockito.any(JID.class), Mockito.eq(Affiliations.publisher));
267+
268+
IQ response = (IQ) queue.poll();
269+
Assert.assertEquals(IQ.Type.result, response.getType());
270+
271+
}
272+
232273
}

0 commit comments

Comments
 (0)