summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/presence/PayloadAddingPresenceSenderTest.java')
-rw-r--r--test/com/isode/stroke/presence/PayloadAddingPresenceSenderTest.java144
1 files changed, 144 insertions, 0 deletions
diff --git a/test/com/isode/stroke/presence/PayloadAddingPresenceSenderTest.java b/test/com/isode/stroke/presence/PayloadAddingPresenceSenderTest.java
new file mode 100644
index 0000000..fb75a99
--- /dev/null
+++ b/test/com/isode/stroke/presence/PayloadAddingPresenceSenderTest.java
@@ -0,0 +1,144 @@
+/*
+ * 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.elements.Payload;
+import com.isode.stroke.client.DummyStanzaChannel;
+import com.isode.stroke.presence.DirectedPresenceSender;
+import com.isode.stroke.presence.StanzaChannelPresenceSender;
+import com.isode.stroke.presence.PayloadAddingPresenceSender;
+import com.isode.stroke.jid.JID;
+
+public class PayloadAddingPresenceSenderTest {
+
+ private DummyStanzaChannel stanzaChannel;
+ private StanzaChannelPresenceSender presenceSender;
+
+ private PayloadAddingPresenceSender createSender() {
+ PayloadAddingPresenceSender sender = new PayloadAddingPresenceSender(presenceSender);
+ return sender;
+ }
+
+ private class MyPayload extends Payload {
+
+ public MyPayload() {
+
+ }
+
+ public MyPayload(final String body) {
+ this.body = body;
+ }
+
+ public String body = "";
+ };
+
+ @Before
+ public void setUp() {
+ stanzaChannel = new DummyStanzaChannel();
+ presenceSender = new StanzaChannelPresenceSender(stanzaChannel);
+ }
+
+ @Test
+ public void testSetPayloadAddsPayloadOnPresenceSend() {
+ PayloadAddingPresenceSender testling = createSender();
+
+ testling.setPayload(new MyPayload("foo"));
+ testling.sendPresence(new Presence("bar"));
+
+ assertEquals(1, (stanzaChannel.sentStanzas.size()));
+ assertEquals(("bar"), stanzaChannel.getStanzaAtIndex(new Presence(), 0).getStatus());
+ assertNotNull(stanzaChannel.getStanzaAtIndex(new Presence(), 0).getPayload(new MyPayload()));
+ }
+
+ @Test
+ public void testSetNullPayloadDoesNotAddPayloadOnPresenceSend() {
+ PayloadAddingPresenceSender testling = createSender();
+
+ testling.setPayload(null);
+ testling.sendPresence(new Presence("bar"));
+
+ assertEquals(1, (stanzaChannel.sentStanzas.size()));
+ assertEquals(("bar"), stanzaChannel.getStanzaAtIndex(new Presence(), 0).getStatus());
+ assertNull(stanzaChannel.getStanzaAtIndex(new Presence(), 0).getPayload(new MyPayload()));
+ }
+
+ @Test
+ public void testSendPresenceDoesNotAlterOriginalPayload() {
+ PayloadAddingPresenceSender testling = createSender();
+
+ testling.setPayload(new MyPayload("foo"));
+ Presence presence = new Presence("bar");
+ testling.sendPresence(presence);
+
+ assertNull(presence.getPayload(new MyPayload()));
+ }
+
+ @Test
+ public void testSetPayloadAfterInitialPresenceResendsPresence() {
+ PayloadAddingPresenceSender testling = createSender();
+
+ testling.sendPresence(new Presence("bar"));
+ testling.setPayload(new MyPayload("foo"));
+
+ assertEquals(2, (stanzaChannel.sentStanzas.size()));
+ assertEquals(("bar"), stanzaChannel.getStanzaAtIndex(new Presence(), 1).getStatus());
+ assertNotNull(stanzaChannel.getStanzaAtIndex(new Presence(), 1).getPayload(new MyPayload()));
+ }
+
+ @Test
+ public void testSetPayloadAfterUnavailablePresenceDoesNotResendPresence() {
+ PayloadAddingPresenceSender testling = createSender();
+
+ testling.sendPresence(new Presence("bar"));
+
+ Presence presence = new Presence("bar");
+ presence.setType(Presence.Type.Unavailable);
+ testling.sendPresence(presence);
+
+ testling.setPayload(new MyPayload("foo"));
+
+ assertEquals(2, (stanzaChannel.sentStanzas.size()));
+ }
+
+ @Test
+ public void testSetPayloadAfterResetDoesNotResendPresence() {
+ PayloadAddingPresenceSender testling = createSender();
+ testling.sendPresence(new Presence("bar"));
+
+ testling.reset();
+ testling.setPayload(new MyPayload("foo"));
+
+ assertEquals(1, (stanzaChannel.sentStanzas.size()));
+ }
+
+ @Test
+ public void testSendDirectedPresenceIsNotResent() {
+ PayloadAddingPresenceSender testling = createSender();
+
+ testling.sendPresence(new Presence("bar"));
+ Presence directedPresence = new Presence("baz");
+ directedPresence.setTo(new JID("foo@bar.com"));
+ testling.sendPresence(directedPresence);
+ testling.setPayload(new MyPayload("foo"));
+
+ assertEquals(3, (stanzaChannel.sentStanzas.size()));
+ assertEquals(("bar"), stanzaChannel.getStanzaAtIndex(new Presence(), 2).getStatus());
+ }
+} \ No newline at end of file