From 5a1766189414d40e305a106ef0cca73252bfc48e Mon Sep 17 00:00:00 2001 From: Lloyd Watkin Date: Fri, 20 Mar 2015 11:05:43 +0000 Subject: [PATCH] Added additional logging --- .../iq/namespace/pubsub/set/ItemDelete.java | 6 ++- .../namespace/pubsub/set/ItemDeleteTest.java | 37 +++++++++++++++++-- .../pubsub/item/delete/request-full-id.stanza | 10 +++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 src/test/resources/stanzas/iq/pubsub/item/delete/request-full-id.stanza diff --git a/src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDelete.java b/src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDelete.java index 66f0876a..cf741068 100644 --- a/src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDelete.java +++ b/src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDelete.java @@ -17,6 +17,7 @@ import org.buddycloud.channelserver.pubsub.model.impl.GlobalItemIDImpl; import org.buddycloud.channelserver.pubsub.subscription.Subscriptions; import org.buddycloud.channelserver.utils.XMLConstants; +import org.buddycloud.channelserver.utils.node.item.payload.Buddycloud; import org.dom4j.Element; import org.dom4j.Namespace; import org.dom4j.dom.DOMElement; @@ -82,7 +83,10 @@ public void process(Element elm, JID actor, IQ reqIQ, Element rsm) throws Interr setErrorCondition(PacketError.Type.modify, PacketError.Condition.bad_request); } catch (IllegalArgumentException e) { LOGGER.error(e); - setErrorCondition(PacketError.Type.modify, PacketError.Condition.bad_request); + createExtendedErrorReply( + PacketError.Type.modify, PacketError.Condition.bad_request, + "global-id-error", Buddycloud.NS_ERROR, e.getMessage() + ); } outQueue.put(response); } diff --git a/src/test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDeleteTest.java b/src/test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDeleteTest.java index 5dd4f6ff..3ae2f690 100644 --- a/src/test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDeleteTest.java +++ b/src/test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/set/ItemDeleteTest.java @@ -181,8 +181,9 @@ public void testProvidingEmptyItemIdReturnsError() throws Exception { } @Test - public void testItemWhichDoesntExistReturnsItemNotFoundError() + public void itemWhichDoesntExistReturnsItemNotFoundError() throws Exception { + Mockito.when(channelManager.nodeExists(node)).thenReturn(true); Mockito.when(channelManager.getNodeItem(node, "item-id")).thenReturn( null); @@ -190,7 +191,7 @@ public void testItemWhichDoesntExistReturnsItemNotFoundError() itemDelete.process(element, jid, request, null); - Packet response = queue.poll(100, TimeUnit.MILLISECONDS); + Packet response = queue.poll(); PacketError error = response.getError(); Assert.assertNotNull(error); @@ -285,12 +286,12 @@ public void testSuccessfulRequestSendsResponseStanza() throws Exception { itemDelete.process(element, jid, request, null); Mockito.verify(channelManager).deleteNodeItemById(node, "item-id"); - IQ response = (IQ) queue.poll(100, TimeUnit.MILLISECONDS); + IQ response = (IQ) queue.poll(); Assert.assertEquals(IQ.Type.result.toString(), response.getElement() .attribute("type").getValue()); // Check that no notifications are sent - Packet notification = queue.poll(100, TimeUnit.MILLISECONDS); + Packet notification = queue.poll(); Assert.assertNull(notification); } @@ -485,4 +486,32 @@ public void requestsThreadWhenDeletingParentPost() throws Exception { notification.getElement().element("event").element("items") .element("retract").attributeValue("id")); } + + @Test + public void canDeleteItemUsingAFullItemId() throws Exception { + + NodeItem nodeItem = new NodeItemImpl(node, "item-id", new Date(), + payload.replaceAll("romeo@shakespeare.lit", + "juliet@shakespeare.lit"), "item-id"); + + Mockito.when(channelManager.nodeExists(node)).thenReturn(true); + Mockito.when( + channelManager.getNodeItem(Mockito.eq("/user/capulet@shakespeare.lit/posts"), + Mockito.eq("item-id"))).thenReturn(nodeItem); + + IQ request = toIq(readStanzaAsString("/iq/pubsub/item/delete/request-full-id.stanza")); + + itemDelete.setChannelManager(channelManager); + + itemDelete.process(element, jid, request, null); + + Mockito.verify(channelManager).deleteNodeItemById(node, "item-id"); + IQ response = (IQ) queue.poll(); + + Assert.assertEquals(IQ.Type.result.toString(), response.getElement() + .attribute("type").getValue()); + // Check that no notifications are sent + Packet notification = queue.poll(); + Assert.assertNull(notification); + } } diff --git a/src/test/resources/stanzas/iq/pubsub/item/delete/request-full-id.stanza b/src/test/resources/stanzas/iq/pubsub/item/delete/request-full-id.stanza new file mode 100644 index 00000000..f9a9fb7f --- /dev/null +++ b/src/test/resources/stanzas/iq/pubsub/item/delete/request-full-id.stanza @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file