Skip to content

Commit 9254336

Browse files
author
Lloyd Watkin
committed
Test that non-iq & iq[type=result] do not get remapped
1 parent 517e072 commit 9254336

2 files changed

Lines changed: 60 additions & 4 deletions

File tree

src/main/java/org/buddycloud/channelserver/queue/FederatedQueueManager.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,15 @@ public void process(Packet packet) throws ComponentException {
7474
logger.debug("Packet payload " + packet.toXML() + " going to federation.");
7575

7676
String to = packet.getTo().toString();
77+
String uniqueId = packet.getID();
78+
79+
if (true == performIdMapping(packet)) {
7780

78-
String uniqueId = generateUniqueId(packet);
79-
idMap.put(uniqueId, packet.getID());
80-
packet.setID(uniqueId);
81-
81+
uniqueId = generateUniqueId(packet);
82+
idMap.put(uniqueId, packet.getID());
83+
packet.setID(uniqueId);
84+
}
85+
8286
sentRemotePackets.put(uniqueId, packet.getFrom());
8387
try {
8488
extractNodeDetails(packet);
@@ -114,6 +118,17 @@ public void process(Packet packet) throws ComponentException {
114118
}
115119
}
116120

121+
private boolean performIdMapping(Packet packet) {
122+
if (false == packet.getElement().getName().equals("iq")) {
123+
return false;
124+
}
125+
IQ iq = (IQ) packet;
126+
if (true == iq.getType().equals(IQ.Type.result)) {
127+
return false;
128+
}
129+
return true;
130+
}
131+
117132
private void extractNodeDetails(Packet packet) {
118133
try {
119134
String packetXml = packet.toXML();

src/test/java/org/buddycloud/channelserver/queue/FederatedQueueManagerTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.mockito.Mockito;
1818
import org.xmpp.packet.IQ;
1919
import org.xmpp.packet.JID;
20+
import org.xmpp.packet.Message;
2021
import org.xmpp.packet.Packet;
2122
import org.xmpp.packet.PacketError;
2223
import org.buddycloud.channelserver.channel.ChannelsEngineMock;
@@ -254,5 +255,45 @@ public void testOutgoingIqPacketsGetIdMapped() throws Exception {
254255

255256
Assert.assertTrue(originalId.equals(packetInternal.getID()));
256257
}
258+
259+
@Test
260+
public void testNonIqPacketsDoNotGetIdMapped() throws Exception {
261+
channelsEngine.clear();
257262

263+
String originalId = "id:12345";
264+
Message packet = new Message();
265+
packet.setFrom(new JID("romeo@montague.lit/street"));
266+
packet.setTo(new JID("topics.capulet.lit"));
267+
packet.getElement().addAttribute("remote-server-discover", "false");
268+
packet.setID(originalId);
269+
270+
queueManager.addChannelMap(new JID("topics.capulet.lit"));
271+
272+
queueManager.process(packet.createCopy());
273+
274+
Message packetExternal = (Message) channelsEngine.poll();
275+
276+
Assert.assertTrue(originalId.equals(packetExternal.getID()));
277+
}
278+
279+
@Test
280+
public void testIqResultPacketsDontGetIdMapped() throws Exception {
281+
channelsEngine.clear();
282+
283+
String originalId = "id:12345";
284+
IQ packet = new IQ();
285+
packet.setFrom(new JID("romeo@montague.lit/street"));
286+
packet.setTo(new JID("topics.capulet.lit"));
287+
packet.setType(IQ.Type.result);
288+
packet.setID(originalId);
289+
packet.getElement().addAttribute("remote-server-discover", "false");
290+
291+
queueManager.addChannelMap(new JID("topics.capulet.lit"));
292+
293+
queueManager.process(packet.createCopy());
294+
295+
IQ packetExternal = (IQ) channelsEngine.poll();
296+
297+
Assert.assertTrue(originalId.equals(packetExternal.getID()));
298+
}
258299
}

0 commit comments

Comments
 (0)