package org.buddycloud.channelserver.packetprocessor.message.event; import java.util.ArrayList; import java.util.Properties; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import junit.framework.Assert; import org.buddycloud.channelserver.Configuration; import org.buddycloud.channelserver.channel.ChannelManager; import org.buddycloud.channelserver.db.exception.NodeStoreException; import org.buddycloud.channelserver.packetHandler.iq.IQTestHandler; import org.buddycloud.channelserver.packetprocessor.iq.namespace.pubsub.JabberPubsub; import org.buddycloud.channelserver.pubsub.affiliation.Affiliations; import org.buddycloud.channelserver.pubsub.model.NodeMembership; import org.buddycloud.channelserver.pubsub.model.impl.NodeMembershipImpl; import org.buddycloud.channelserver.pubsub.subscription.Subscriptions; import org.dom4j.Element; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import org.xmpp.packet.JID; import org.xmpp.packet.Message; import org.xmpp.packet.Packet; import org.xmpp.resultsetmanagement.ResultSetImpl; public class DeleteProcessorTest extends IQTestHandler { private Message message; private DeleteProcessor deleteProcessor; private Element delete; private BlockingQueue<Packet> queue = new LinkedBlockingQueue<Packet>(); private ChannelManager channelManager; private JID jid = new JID("juliet@shakespeare.lit"); @Before public void setUp() throws Exception { Properties configuration = new Properties(); configuration.setProperty("server.domain.channels", "chgnnels.shakespeare.lit"); channelManager = Mockito.mock(ChannelManager.class); Configuration.getInstance().remove( Configuration.CONFIGURATION_LOCAL_DOMAIN_CHECKER); Configuration.getInstance().putProperty( Configuration.CONFIGURATION_SERVER_DOMAIN, "shakespeare.lit"); ArrayList<NodeMembership> members = new ArrayList<NodeMembership>(); members.add(new NodeMembershipImpl( "/user/romeo@denmark.lit/posts", jid, Subscriptions.subscribed, Affiliations.member, null)); Mockito.doReturn(new ResultSetImpl<NodeMembership>(members)) .when(channelManager).getNodeMemberships(Mockito.anyString()); deleteProcessor = new DeleteProcessor(queue, configuration, channelManager); message = new Message(); message.setType(Message.Type.headline); Element event = message.addChildElement("event", JabberPubsub.NS_PUBSUB_EVENT); delete = event.addElement("delete"); delete.addAttribute("node", "/user/juliet@denmark.lit/posts"); } @Test public void testEventForLocalNodeIsIgnored() throws Exception { Configuration.getInstance().putProperty( Configuration.CONFIGURATION_SERVER_DOMAIN, "denmark.lit"); deleteProcessor.process(message); Assert.assertEquals(0, queue.size()); } @Test(expected = NodeStoreException.class) public void testNodeStoreExceptionIsThrownWhenExpected() throws Exception { Mockito.doThrow(new NodeStoreException()).when(channelManager) .deleteNode(Mockito.anyString()); deleteProcessor.process(message); } @Test public void testNotificationsAreSentOutAsExpected() throws Exception { deleteProcessor.process(message); Assert.assertEquals(1, queue.size()); message.setTo(jid.toString()); Assert.assertEquals(message.toString(), queue.poll().toString()); } }