diff options
Diffstat (limited to 'test/com/isode/stroke/presence/PayloadAddingPresenceSenderTest.java')
-rw-r--r-- | test/com/isode/stroke/presence/PayloadAddingPresenceSenderTest.java | 144 |
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 |