Skip to content

Commit 8b9adcc

Browse files
author
Lloyd Watkin
committed
Add unit test file
1 parent 16f8003 commit 8b9adcc

1 file changed

Lines changed: 335 additions & 0 deletions

File tree

Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
package org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.get;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.concurrent.BlockingQueue;
6+
import java.util.concurrent.LinkedBlockingQueue;
7+
8+
import junit.framework.Assert;
9+
10+
import org.buddycloud.channelserver.Configuration;
11+
import org.buddycloud.channelserver.channel.ChannelManager;
12+
import org.buddycloud.channelserver.packetHandler.iq.IQTestHandler;
13+
import org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.JabberPubsub;
14+
import org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.PubSubElementProcessor;
15+
import org.buddycloud.channelserver.pubsub.affiliation.Affiliations;
16+
import org.buddycloud.channelserver.pubsub.model.NodeMembership;
17+
import org.buddycloud.channelserver.pubsub.model.impl.NodeMembershipImpl;
18+
import org.buddycloud.channelserver.pubsub.subscription.Subscriptions;
19+
import org.dom4j.Element;
20+
import org.dom4j.tree.BaseElement;
21+
import org.junit.Before;
22+
import org.junit.Test;
23+
import org.mockito.Mockito;
24+
import org.xmpp.packet.IQ;
25+
import org.xmpp.packet.JID;
26+
import org.xmpp.packet.Packet;
27+
import org.xmpp.resultsetmanagement.ResultSetImpl;
28+
29+
public class AffiliationsGetTest extends IQTestHandler {
30+
31+
private IQ userRequest;
32+
private IQ nodeRequest;
33+
private AffiliationsGet affiliationsGet;
34+
private Element element;
35+
private BlockingQueue<Packet> queue = new LinkedBlockingQueue<Packet>();
36+
37+
private String node = "/user/pamela@denmark.lit/posts";
38+
private JID jid = new JID("juliet@shakespeare.lit");
39+
private JID invitedBy = new JID("romeo@shakespeare.lit");
40+
41+
private ChannelManager channelManager;
42+
43+
@Before
44+
public void setUp() throws Exception {
45+
46+
queue = new LinkedBlockingQueue<Packet>();
47+
affiliationsGet = new AffiliationsGet(queue, channelManager);
48+
element = new BaseElement("affiliations");
49+
50+
channelManager = Mockito.mock(ChannelManager.class);
51+
Configuration.getInstance().putProperty(Configuration.CONFIGURATION_LOCAL_DOMAIN_CHECKER, Boolean.TRUE.toString());
52+
53+
NodeMembership nodeMembership = new NodeMembershipImpl(node, jid, Subscriptions.subscribed, Affiliations.member, null);
54+
Mockito.when(channelManager.getNodeMembership(Mockito.anyString(), Mockito.any(JID.class))).thenReturn(nodeMembership);
55+
56+
affiliationsGet.setChannelManager(channelManager);
57+
58+
Configuration.getInstance().putProperty(
59+
Configuration.CONFIGURATION_SERVER_DOMAIN, "shakespeare.lit");
60+
Configuration.getInstance().putProperty(
61+
Configuration.CONFIGURATION_SERVER_TOPICS_DOMAIN,
62+
"topics.shakespeare.lit");
63+
Configuration.getInstance().remove(
64+
Configuration.CONFIGURATION_LOCAL_DOMAIN_CHECKER);
65+
66+
userRequest = readStanzaAsIq("/iq/pubsub/affiliations/request-no-node.stanza");
67+
nodeRequest = readStanzaAsIq("/iq/pubsub/affiliations/request-with-node.stanza");
68+
69+
Mockito.when(channelManager.isCachedJID(Mockito.any(JID.class))).thenReturn(true);
70+
}
71+
72+
@Test
73+
public void passingAffiliationsAsElementNameReturnsTrue() {
74+
Assert.assertTrue(affiliationsGet.accept(element));
75+
}
76+
77+
@Test
78+
public void passingNotAffiliationsAsElementNameReturnsFalse() {
79+
Element element = new BaseElement("not-affiliations");
80+
Assert.assertFalse(affiliationsGet.accept(element));
81+
}
82+
83+
@Test
84+
public void remoteNodeForwardsStanza() throws Exception {
85+
86+
Mockito.when(channelManager.isCachedNode(Mockito.anyString())).thenReturn(false);
87+
Configuration.getInstance().putProperty(
88+
Configuration.CONFIGURATION_SERVER_DOMAIN, "denmark.lit");
89+
90+
affiliationsGet.process(element, jid, nodeRequest, null);
91+
92+
IQ response = (IQ) queue.poll();
93+
94+
Assert.assertEquals(IQ.Type.get, response.getType());
95+
Assert.assertEquals(new JID("shakespeare.lit"), response.getTo());
96+
Assert.assertEquals(nodeRequest.getID(), response.getID());
97+
}
98+
99+
@Test
100+
public void remoteJIDForwardsStanza() throws Exception {
101+
102+
Configuration.getInstance().putProperty(
103+
Configuration.CONFIGURATION_SERVER_DOMAIN, "denmark.lit");
104+
105+
Mockito.when(channelManager.isCachedJID(Mockito.any(JID.class))).thenReturn(false);
106+
affiliationsGet.process(element, jid, userRequest, null);
107+
108+
IQ response = (IQ) queue.poll();
109+
110+
Assert.assertEquals(IQ.Type.get, response.getType());
111+
Assert.assertEquals(new JID("shakespeare.lit"), response.getTo());
112+
Assert.assertEquals(userRequest.getID(), response.getID());
113+
}
114+
115+
/*
116+
* NODE AFFILIATIONS
117+
*/
118+
119+
@Test
120+
public void returnsAListOfNodeAffiliations() throws Exception {
121+
122+
List<NodeMembership> members = new ArrayList<NodeMembership>();
123+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.subscribed, Affiliations.publisher, invitedBy));
124+
125+
Mockito.when(channelManager.getNodeMemberships(Mockito.anyString())).thenReturn(new ResultSetImpl<NodeMembership>(members));
126+
127+
affiliationsGet.process(element, jid, nodeRequest, null);
128+
129+
Assert.assertEquals(1, queue.size());
130+
131+
IQ response = (IQ) queue.poll();
132+
133+
Assert.assertEquals(IQ.Type.result, response.getType());
134+
Assert.assertEquals(new JID("francisco@shakespeare.lit/barracks"), response.getTo());
135+
Assert.assertEquals(nodeRequest.getID(), response.getID());
136+
137+
Element pubsub = response.getElement().element("pubsub");
138+
Assert.assertNotNull(pubsub);
139+
Assert.assertEquals(JabberPubsub.NAMESPACE_URI, pubsub.getNamespaceURI());
140+
Element affiliations = pubsub.element("affiliations");
141+
Assert.assertNotNull(affiliations);
142+
Assert.assertEquals(1, affiliations.elements("affiliation").size());
143+
144+
Element affiliation = affiliations.element("affiliation");
145+
146+
Assert.assertEquals(node, affiliation.attributeValue("node"));
147+
Assert.assertEquals(Affiliations.publisher.toString(), affiliation.attributeValue("affiliation"));
148+
Assert.assertEquals(jid.toBareJID(), affiliation.attributeValue("jid"));
149+
}
150+
151+
@Test
152+
public void nodeAffiliationsDoesNotIncludeInvitedPendingNoneByDefault() throws Exception {
153+
154+
List<NodeMembership> members = new ArrayList<NodeMembership>();
155+
members.add(new NodeMembershipImpl(node, invitedBy, Subscriptions.pending, Affiliations.publisher, invitedBy));
156+
members.add(new NodeMembershipImpl(node, invitedBy, Subscriptions.none, Affiliations.publisher, invitedBy));
157+
members.add(new NodeMembershipImpl(node, invitedBy, Subscriptions.invited, Affiliations.publisher, invitedBy));
158+
159+
Mockito.when(channelManager.getNodeMemberships(Mockito.anyString())).thenReturn(new ResultSetImpl<NodeMembership>(members));
160+
161+
affiliationsGet.process(element, jid, nodeRequest, null);
162+
163+
Assert.assertEquals(1, queue.size());
164+
165+
IQ response = (IQ) queue.poll();
166+
167+
Element pubsub = response.getElement().element("pubsub");
168+
Element affiliations = pubsub.element("affiliations");
169+
Assert.assertEquals(0, affiliations.elements("affiliation").size());
170+
171+
}
172+
173+
@Test
174+
public void nodeAffiliationsIncludesInvitedAndPendingIfUser() throws Exception {
175+
176+
List<NodeMembership> members = new ArrayList<NodeMembership>();
177+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.invited, Affiliations.publisher, invitedBy));
178+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.pending, Affiliations.publisher, invitedBy));
179+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.none, Affiliations.publisher, invitedBy));
180+
181+
Mockito.when(channelManager.getNodeMemberships(Mockito.anyString())).thenReturn(new ResultSetImpl<NodeMembership>(members));
182+
183+
affiliationsGet.process(element, jid, nodeRequest, null);
184+
185+
Assert.assertEquals(1, queue.size());
186+
187+
IQ response = (IQ) queue.poll();
188+
189+
Element pubsub = response.getElement().element("pubsub");
190+
Element affiliations = pubsub.element("affiliations");
191+
Assert.assertEquals(2, affiliations.elements("affiliation").size());
192+
193+
/* Includes invited by details */
194+
Assert.assertEquals(invitedBy.toBareJID(), affiliations.element("affiliation").attributeValue("invited-by"));
195+
196+
}
197+
198+
@Test
199+
public void nodeAffiliationsIncludesInvitedAndPendingIfOwner() throws Exception {
200+
201+
NodeMembership nodeMembership = new NodeMembershipImpl(node, jid, Subscriptions.subscribed, Affiliations.owner, null);
202+
Mockito.when(channelManager.getNodeMembership(Mockito.anyString(), Mockito.any(JID.class))).thenReturn(nodeMembership);
203+
204+
List<NodeMembership> members = new ArrayList<NodeMembership>();
205+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.invited, Affiliations.publisher, invitedBy));
206+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.pending, Affiliations.publisher, invitedBy));
207+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.none, Affiliations.publisher, invitedBy));
208+
209+
Mockito.when(channelManager.getNodeMemberships(Mockito.anyString())).thenReturn(new ResultSetImpl<NodeMembership>(members));
210+
211+
affiliationsGet.process(element, invitedBy, nodeRequest, null);
212+
213+
Assert.assertEquals(1, queue.size());
214+
215+
IQ response = (IQ) queue.poll();
216+
217+
Element pubsub = response.getElement().element("pubsub");
218+
Element affiliations = pubsub.element("affiliations");
219+
Assert.assertEquals(2, affiliations.elements("affiliation").size());
220+
221+
/* Includes invited by details */
222+
Assert.assertEquals(invitedBy.toBareJID(), affiliations.element("affiliation").attributeValue("invited-by"));
223+
224+
}
225+
226+
@Test
227+
public void nodeAffiliationsIncludesInvitedAndPendingIfModerator() throws Exception {
228+
229+
NodeMembership nodeMembership = new NodeMembershipImpl(node, jid, Subscriptions.subscribed, Affiliations.moderator, null);
230+
Mockito.when(channelManager.getNodeMembership(Mockito.anyString(), Mockito.any(JID.class))).thenReturn(nodeMembership);
231+
232+
List<NodeMembership> members = new ArrayList<NodeMembership>();
233+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.invited, Affiliations.publisher, invitedBy));
234+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.pending, Affiliations.publisher, invitedBy));
235+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.none, Affiliations.publisher, invitedBy));
236+
237+
Mockito.when(channelManager.getNodeMemberships(Mockito.anyString())).thenReturn(new ResultSetImpl<NodeMembership>(members));
238+
239+
affiliationsGet.process(element, invitedBy, nodeRequest, null);
240+
241+
Assert.assertEquals(1, queue.size());
242+
243+
IQ response = (IQ) queue.poll();
244+
245+
Element pubsub = response.getElement().element("pubsub");
246+
Element affiliations = pubsub.element("affiliations");
247+
Assert.assertEquals(2, affiliations.elements("affiliation").size());
248+
249+
/* Includes invited by details */
250+
Assert.assertEquals(invitedBy.toBareJID(), affiliations.element("affiliation").attributeValue("invited-by"));
251+
252+
}
253+
254+
255+
/*
256+
* USER AFFILIATIONS
257+
*/
258+
259+
@Test
260+
public void returnsAListOfUserAffiliations() throws Exception {
261+
262+
List<NodeMembership> members = new ArrayList<NodeMembership>();
263+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.subscribed, Affiliations.publisher, invitedBy));
264+
265+
Mockito.when(channelManager.getUserMemberships(Mockito.any(JID.class))).thenReturn(new ResultSetImpl<NodeMembership>(members));
266+
267+
affiliationsGet.process(element, jid, userRequest, null);
268+
269+
Assert.assertEquals(1, queue.size());
270+
271+
IQ response = (IQ) queue.poll();
272+
273+
Assert.assertEquals(IQ.Type.result, response.getType());
274+
Assert.assertEquals(new JID("francisco@shakespeare.lit/barracks"), response.getTo());
275+
Assert.assertEquals(nodeRequest.getID(), response.getID());
276+
277+
Element pubsub = response.getElement().element("pubsub");
278+
Assert.assertNotNull(pubsub);
279+
Assert.assertEquals(JabberPubsub.NS_PUBSUB_OWNER, pubsub.getNamespaceURI());
280+
Element affiliations = pubsub.element("affiliations");
281+
Assert.assertNotNull(affiliations);
282+
Assert.assertEquals(1, affiliations.elements("affiliation").size());
283+
284+
Element affiliation = affiliations.element("affiliation");
285+
286+
Assert.assertEquals(node, affiliation.attributeValue("node"));
287+
Assert.assertEquals(Affiliations.publisher.toString(), affiliation.attributeValue("affiliation"));
288+
Assert.assertEquals(jid.toBareJID(), affiliation.attributeValue("jid"));
289+
}
290+
291+
@Test
292+
public void userAffiliationsDoesNotIncludeInvitedNoneByDefault() throws Exception {
293+
294+
List<NodeMembership> members = new ArrayList<NodeMembership>();
295+
members.add(new NodeMembershipImpl(node, invitedBy, Subscriptions.none, Affiliations.publisher, invitedBy));
296+
297+
Mockito.when(channelManager.getUserMemberships(Mockito.any(JID.class))).thenReturn(new ResultSetImpl<NodeMembership>(members));
298+
299+
affiliationsGet.process(element, jid, userRequest, null);
300+
301+
Assert.assertEquals(1, queue.size());
302+
303+
IQ response = (IQ) queue.poll();
304+
305+
Element pubsub = response.getElement().element("pubsub");
306+
Element affiliations = pubsub.element("affiliations");
307+
Assert.assertEquals(0, affiliations.elements("affiliation").size());
308+
309+
}
310+
311+
@Test
312+
public void addsInvitedByDetailsIfSubscriptionIsInvited() throws Exception {
313+
314+
List<NodeMembership> members = new ArrayList<NodeMembership>();
315+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.invited, Affiliations.publisher, invitedBy));
316+
members.add(new NodeMembershipImpl(node, jid, Subscriptions.subscribed, Affiliations.publisher, invitedBy));
317+
318+
Mockito.when(channelManager.getUserMemberships(Mockito.any(JID.class))).thenReturn(new ResultSetImpl<NodeMembership>(members));
319+
320+
affiliationsGet.process(element, jid, userRequest, null);
321+
322+
Assert.assertEquals(1, queue.size());
323+
324+
IQ response = (IQ) queue.poll();
325+
326+
Element pubsub = response.getElement().element("pubsub");
327+
Element affiliations = pubsub.element("affiliations");
328+
Assert.assertEquals(2, affiliations.elements("affiliation").size());
329+
330+
/* Includes invited by details */
331+
Assert.assertEquals(invitedBy.toBareJID(), ((Element) affiliations.elements("affiliation").get(0)).attributeValue("invited-by"));
332+
Assert.assertNull(((Element) affiliations.elements("affiliation").get(1)).attribute("invited-by"));
333+
}
334+
335+
}

0 commit comments

Comments
 (0)