@Override public void onReceiptReceived(Jid fromJid, Jid toJid, String receiptId, Stanza receipt) { assertThat("julia@capulet.com", equalsCharSequence(fromJid)); assertThat("romeo@montague.com", equalsCharSequence(toJid)); assertEquals("original-test-id", receiptId); reportInvoked(); } }
@Factory public static Matcher<CharSequence> equalsCharSequence(CharSequence charSequence) { return new CharSequenceEquals(charSequence); } }
@Test public void parsesWell() throws IOException, XmlPullParserException { XmlPullParser parser = PacketParserUtils.newXmppParser(); parser.setInput(getClass().getResourceAsStream(XHTML_EXTENSION_SAMPLE_RESOURCE_NAME), "UTF-8"); parser.next(); XHTMLExtensionProvider provider = new XHTMLExtensionProvider(); ExtensionElement extension = provider.parse(parser, parser.getDepth()); assertThat(extension, instanceOf(XHTMLExtension.class)); XHTMLExtension attachmentsInfo = (XHTMLExtension) extension; assertThat(sampleXhtml(), equalsCharSequence(attachmentsInfo.getBodies().get(0))); }
@Test public void consumeUnparsedInput() throws Exception { final String MESSAGE_EXCEPTION_ELEMENT = "<" + ThrowException.ELEMENT + " xmlns='" + ThrowException.NAMESPACE + "'>" + "<nothingInHere>" + "</nothingInHere>" + "</" + ThrowException.ELEMENT + ">"; XmlPullParser parser = TestUtils.getMessageParser( "<message from='user@server.example' to='francisco@denmark.lit' id='foo'>" + MESSAGE_EXCEPTION_ELEMENT + EXTENSION2 + "</message>"); int parserDepth = parser.getDepth(); CharSequence content = null; try { PacketParserUtils.parseMessage(parser); } catch (Exception e) { content = PacketParserUtils.parseContentDepth(parser, parserDepth, false); } assertThat(MESSAGE_EXCEPTION_ELEMENT + EXTENSION2 + "</message>", equalsCharSequence(content)); }
@Test public void subscriptionsOwnerResultTest() throws Exception { // @formatter:off final String resultStanza = "<iq from='pubsub.example.org' to='julia@example.org/Smack' id='HaT4m-13' type='result'>" + "<pubsub xmlns='http://jabber.org/protocol/pubsub#owner'>" + "<subscriptions node='test'>" + "<subscription jid='foo@example.org/Smack' subscription='subscribed' subid='58C1A6F99F2A7'/>" + "<subscription jid='julia@example.org/Smack' subscription='subscribed' subid='58C18F8917321'/>" + "</subscriptions>" + "</pubsub>" + "</iq>"; // @formatter:on XmlPullParser parser = TestUtils.getIQParser(resultStanza); PubSub pubsubResult = (PubSub) PacketParserUtils.parseIQ(parser); SubscriptionsExtension subElem = pubsubResult.getExtension(PubSubElementType.SUBSCRIPTIONS_OWNER); List<Subscription> subscriptions = subElem.getSubscriptions(); assertEquals(2, subscriptions.size()); Subscription sub1 = subscriptions.get(0); assertThat("foo@example.org/Smack", equalsCharSequence(sub1.getJid())); assertEquals(Subscription.State.subscribed, sub1.getState()); assertEquals("58C1A6F99F2A7", sub1.getId()); Subscription sub2 = subscriptions.get(1); assertThat("julia@example.org/Smack", equalsCharSequence(sub2.getJid())); assertEquals(Subscription.State.subscribed, sub2.getState()); assertEquals("58C18F8917321", sub2.getId()); } }
@Test public void forwardedTest() throws Exception { XmlPullParser parser; String control; Forwarded fwd; control = XMLBuilder.create("forwarded") .a("xmlns", "urn:xmpp:forwarded:0") .e("message") .a("from", "romeo@montague.com") .asString(outputProperties); parser = PacketParserUtils.getParserFor(control); fwd = new ForwardedProvider().parse(parser); // no delay in packet assertEquals(null, fwd.getDelayInformation()); // check message assertThat("romeo@montague.com", equalsCharSequence(fwd.getForwardedStanza().getFrom())); // check end of tag assertEquals(XmlPullParser.END_TAG, parser.getEventType()); assertEquals("forwarded", parser.getName()); }
@Test public void carbonSentTest() throws Exception { XmlPullParser parser; String control; CarbonExtension cc; Forwarded fwd; control = XMLBuilder.create("sent") .e("forwarded") .a("xmlns", "urn:xmpp:forwarded:0") .e("message") .a("from", "romeo@montague.com") .asString(outputProperties); parser = PacketParserUtils.getParserFor(control); cc = new CarbonManagerProvider().parse(parser); fwd = cc.getForwarded(); // meta assertEquals(CarbonExtension.Direction.sent, cc.getDirection()); // no delay in packet assertEquals(null, fwd.getDelayInformation()); // check message assertThat("romeo@montague.com", equalsCharSequence(fwd.getForwardedStanza().getFrom())); // check end of tag assertEquals(XmlPullParser.END_TAG, parser.getEventType()); assertEquals("sent", parser.getName()); }
@Test public void forwardedWithDelayTest() throws Exception { XmlPullParser parser; String control; Forwarded fwd; // @formatter:off control = XMLBuilder.create("forwarded").a("xmlns", "urn:xmpp:forwarded:0") .e("message").a("from", "romeo@montague.com").up() .e("delay").ns(DelayInformation.NAMESPACE).a("stamp", "2010-07-10T23:08:25Z") .asString(outputProperties); // @formatter:on parser = PacketParserUtils.getParserFor(control); fwd = new ForwardedProvider().parse(parser); // assert there is delay information in packet DelayInformation delay = fwd.getDelayInformation(); assertNotNull(delay); // check message assertThat("romeo@montague.com", equalsCharSequence(fwd.getForwardedStanza().getFrom())); // check end of tag assertEquals(XmlPullParser.END_TAG, parser.getEventType()); assertEquals("forwarded", parser.getName()); }
@Test public void checkProvider() throws Exception { // @formatter:off String control = "<iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='s2c1' type='get'>" + "<ping xmlns='urn:xmpp:ping'/>" + "</iq>"; // @formatter:on DummyConnection con = new DummyConnection(); con.connect(); // Enable ping for this connection PingManager.getInstanceFor(con); IQ pingRequest = PacketParserUtils.parseStanza(control); assertTrue(pingRequest instanceof Ping); con.processStanza(pingRequest); Stanza pongPacket = con.getSentPacket(); assertTrue(pongPacket instanceof IQ); IQ pong = (IQ) pongPacket; assertThat("capulet.lit", equalsCharSequence(pong.getTo())); assertEquals("s2c1", pong.getStanzaId()); assertEquals(IQ.Type.result, pong.getType()); }
@Test public void receiptManagerAutoReplyTest() throws Exception { DummyConnection c = new DummyConnection(); c.connect(); DeliveryReceiptManager drm = DeliveryReceiptManager.getInstanceFor(c); drm.setAutoReceiptMode(AutoReceiptMode.always); assertEquals(AutoReceiptMode.always, drm.getAutoReceiptMode()); // test auto-receipts Message m = new Message(JidCreate.from("julia@capulet.com"), Message.Type.normal); m.setFrom(JidCreate.from("romeo@montague.com")); m.setStanzaId("test-receipt-request"); DeliveryReceiptRequest.addTo(m); // the DRM will send a reply-packet c.processStanza(m); Stanza reply = c.getSentPacket(); DeliveryReceipt r = DeliveryReceipt.from((Message) reply); assertThat("romeo@montague.com", equalsCharSequence(reply.getTo())); assertEquals("test-receipt-request", r.getId()); } }
assertThat("capulet.lit", equalsCharSequence(reply.getTo())); assertEquals("s2c1", reply.getStanzaId()); assertEquals(IQ.Type.result, reply.getType());