diff options
Diffstat (limited to 'test/com/isode/stroke/presence/DirectedPresenceSenderTest.java')
-rw-r--r-- | test/com/isode/stroke/presence/DirectedPresenceSenderTest.java | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/test/com/isode/stroke/presence/DirectedPresenceSenderTest.java b/test/com/isode/stroke/presence/DirectedPresenceSenderTest.java new file mode 100644 index 0000000..a40a1a9 --- /dev/null +++ b/test/com/isode/stroke/presence/DirectedPresenceSenderTest.java @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2010 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ +/* + * Copyright (c) 2015 Tarun Gupta. + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +package com.isode.stroke.presence; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import org.junit.Test; +import org.junit.Before; +import com.isode.stroke.elements.Presence; +import com.isode.stroke.client.DummyStanzaChannel; +import com.isode.stroke.presence.DirectedPresenceSender; +import com.isode.stroke.presence.StanzaChannelPresenceSender; +import com.isode.stroke.jid.JID; + +public class DirectedPresenceSenderTest { + + private DummyStanzaChannel channel; + private StanzaChannelPresenceSender stanzaChannelPresenceSender; + private Presence testPresence; + private Presence secondTestPresence; + + private DirectedPresenceSender createPresenceSender() { + return new DirectedPresenceSender(stanzaChannelPresenceSender); + } + + @Before + public void setUp() { + channel = new DummyStanzaChannel(); + testPresence = new Presence(); + testPresence.setStatus("Foo"); + secondTestPresence = new Presence(); + secondTestPresence.setStatus("Bar"); + stanzaChannelPresenceSender = new StanzaChannelPresenceSender(channel); + } + + @Test + public void testSendPresence() { + DirectedPresenceSender testling = createPresenceSender(); + testling.sendPresence(testPresence); + + assertEquals(1, (channel.sentStanzas.size())); + Presence presence = (Presence)(channel.sentStanzas.get(0)); + assertEquals(testPresence, presence); + } + + @Test + public void testSendPresence_UndirectedPresenceWithDirectedPresenceReceivers() { + DirectedPresenceSender testling = createPresenceSender(); + testling.addDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.AndSendPresence); + + testling.sendPresence(testPresence); + + assertEquals(2, (channel.sentStanzas.size())); + Presence presence = (Presence)(channel.sentStanzas.get(0)); + assertEquals(testPresence, presence); + presence = (Presence)(channel.sentStanzas.get(1)); + assertEquals(testPresence.getStatus(), presence.getStatus()); + assertEquals(new JID("alice@wonderland.lit/teaparty"), presence.getTo()); + } + + @Test + public void testSendPresence_DirectedPresenceWithDirectedPresenceReceivers() { + DirectedPresenceSender testling = createPresenceSender(); + testling.addDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.AndSendPresence); + channel.sentStanzas.clear(); + + testPresence.setTo(new JID("foo@bar.com")); + testling.sendPresence(testPresence); + + assertEquals(1, (channel.sentStanzas.size())); + Presence presence = (Presence)(channel.sentStanzas.get(0)); + assertEquals(testPresence, presence); + } + + @Test + public void testAddDirectedPresenceReceiver() { + DirectedPresenceSender testling = createPresenceSender(); + testling.sendPresence(testPresence); + channel.sentStanzas.clear(); + + testling.addDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.AndSendPresence); + + assertEquals(1, (channel.sentStanzas.size())); + Presence presence = (Presence)(channel.sentStanzas.get(0)); + assertEquals(testPresence.getStatus(), presence.getStatus()); + assertEquals(new JID("alice@wonderland.lit/teaparty"), presence.getTo()); + } + + @Test + public void testAddDirectedPresenceReceiver_WithoutSendingPresence() { + DirectedPresenceSender testling = createPresenceSender(); + testling.sendPresence(testPresence); + channel.sentStanzas.clear(); + + testling.addDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.DontSendPresence); + + assertEquals(0, (channel.sentStanzas.size())); + } + + @Test + public void testAddDirectedPresenceReceiver_AfterSendingDirectedPresence() { + DirectedPresenceSender testling = createPresenceSender(); + testling.sendPresence(testPresence); + secondTestPresence.setTo(new JID("foo@bar.com")); + testling.sendPresence(secondTestPresence); + channel.sentStanzas.clear(); + + testling.addDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.AndSendPresence); + + assertEquals(1, (channel.sentStanzas.size())); + Presence presence = (Presence)(channel.sentStanzas.get(0)); + assertEquals(testPresence.getStatus(), presence.getStatus()); + assertEquals(new JID("alice@wonderland.lit/teaparty"), presence.getTo()); + } + + @Test + public void testRemoveDirectedPresenceReceiver() { + DirectedPresenceSender testling = createPresenceSender(); + testling.addDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.DontSendPresence); + + testling.removeDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.AndSendPresence); + testling.sendPresence(testPresence); + + assertEquals(2, (channel.sentStanzas.size())); + assertEquals(((Presence)(channel.sentStanzas.get(0))).getType(), Presence.Type.Unavailable); + assertEquals(channel.sentStanzas.get(1), testPresence); + } + + @Test + public void testRemoveDirectedPresenceReceiver_WithoutSendingPresence() { + DirectedPresenceSender testling = createPresenceSender(); + testling.addDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.AndSendPresence); + channel.sentStanzas.clear(); + + testling.removeDirectedPresenceReceiver(new JID("alice@wonderland.lit/teaparty"), DirectedPresenceSender.SendPresence.DontSendPresence); + testling.sendPresence(testPresence); + + assertEquals(1, (channel.sentStanzas.size())); + assertEquals(channel.sentStanzas.get(0), testPresence); + } +}
\ No newline at end of file |