summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/presence/DirectedPresenceSenderTest.java')
-rw-r--r--test/com/isode/stroke/presence/DirectedPresenceSenderTest.java153
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