mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-10 18:59:41 +02:00
Make PubSub elements namespace aware
Also fixes SMACK-814.
This commit is contained in:
parent
acc64ffc2d
commit
31244ae982
25 changed files with 354 additions and 173 deletions
|
@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue;
|
|||
|
||||
import org.jivesoftware.smack.ThreadedDummyConnection;
|
||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||
import org.jivesoftware.smack.packet.NamedElement;
|
||||
import org.jivesoftware.smack.packet.Stanza;
|
||||
import org.jivesoftware.smack.util.PacketParserUtils;
|
||||
|
||||
|
@ -60,16 +61,16 @@ public class ItemValidationTest extends InitExtensions {
|
|||
@Test
|
||||
public void verifyBasicItem() throws Exception {
|
||||
Item simpleItem = new Item();
|
||||
String simpleCtrl = "<item />";
|
||||
assertXMLEqual(simpleCtrl, simpleItem.toXML());
|
||||
String simpleCtrl = "<item xmlns='http://jabber.org/protocol/pubsub' />";
|
||||
assertXMLEqual(simpleCtrl, simpleItem.toXML().toString());
|
||||
|
||||
Item idItem = new Item("uniqueid");
|
||||
String idCtrl = "<item id='uniqueid'/>";
|
||||
assertXMLEqual(idCtrl, idItem.toXML());
|
||||
String idCtrl = "<item xmlns='http://jabber.org/protocol/pubsub' id='uniqueid'/>";
|
||||
assertXMLEqual(idCtrl, idItem.toXML().toString());
|
||||
|
||||
Item itemWithNodeId = new Item("testId", "testNode");
|
||||
String nodeIdCtrl = "<item id='testId' node='testNode' />";
|
||||
assertXMLEqual(nodeIdCtrl, itemWithNodeId.toXML());
|
||||
String nodeIdCtrl = "<item xmlns='http://jabber.org/protocol/pubsub' id='testId' node='testNode' />";
|
||||
assertXMLEqual(nodeIdCtrl, itemWithNodeId.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -77,16 +78,16 @@ public class ItemValidationTest extends InitExtensions {
|
|||
SimplePayload payload = new SimplePayload(null, null, "<data>This is the payload</data>");
|
||||
|
||||
PayloadItem<SimplePayload> simpleItem = new PayloadItem<>(payload);
|
||||
String simpleCtrl = "<item>" + payload.toXML() + "</item>";
|
||||
assertXMLEqual(simpleCtrl, simpleItem.toXML());
|
||||
String simpleCtrl = "<item xmlns='http://jabber.org/protocol/pubsub'>" + payload.toXML() + "</item>";
|
||||
assertXMLEqual(simpleCtrl, simpleItem.toXML().toString());
|
||||
|
||||
PayloadItem<SimplePayload> idItem = new PayloadItem<>("uniqueid", payload);
|
||||
String idCtrl = "<item id='uniqueid'>" + payload.toXML() + "</item>";
|
||||
assertXMLEqual(idCtrl, idItem.toXML());
|
||||
String idCtrl = "<item xmlns='http://jabber.org/protocol/pubsub' id='uniqueid'>" + payload.toXML() + "</item>";
|
||||
assertXMLEqual(idCtrl, idItem.toXML().toString());
|
||||
|
||||
PayloadItem<SimplePayload> itemWithNodeId = new PayloadItem<>("testId", "testNode", payload);
|
||||
String nodeIdCtrl = "<item id='testId' node='testNode'>" + payload.toXML() + "</item>";
|
||||
assertXMLEqual(nodeIdCtrl, itemWithNodeId.toXML());
|
||||
String nodeIdCtrl = "<item xmlns='http://jabber.org/protocol/pubsub' id='testId' node='testNode'>" + payload.toXML() + "</item>";
|
||||
assertXMLEqual(nodeIdCtrl, itemWithNodeId.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -101,7 +102,7 @@ public class ItemValidationTest extends InitExtensions {
|
|||
"</message>");
|
||||
|
||||
Stanza message = PacketParserUtils.parseMessage(parser);
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.EVENT.getXmlns());
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns());
|
||||
|
||||
assertTrue(eventExt instanceof EventElement);
|
||||
EventElement event = (EventElement) eventExt;
|
||||
|
@ -110,7 +111,7 @@ public class ItemValidationTest extends InitExtensions {
|
|||
assertTrue(event.getExtensions().get(0) instanceof ItemsExtension);
|
||||
assertEquals(1, ((ItemsExtension) event.getExtensions().get(0)).items.size());
|
||||
|
||||
ExtensionElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
NamedElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
assertTrue(itemExt instanceof Item);
|
||||
assertEquals("testid1", ((Item) itemExt).getId());
|
||||
}
|
||||
|
@ -131,9 +132,9 @@ public class ItemValidationTest extends InitExtensions {
|
|||
"</message>");
|
||||
|
||||
Stanza message = PacketParserUtils.parseMessage(parser);
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.EVENT.getXmlns());
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns());
|
||||
EventElement event = (EventElement) eventExt;
|
||||
ExtensionElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
NamedElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
|
||||
assertTrue(itemExt instanceof PayloadItem<?>);
|
||||
PayloadItem<?> item = (PayloadItem<?>) itemExt;
|
||||
|
@ -177,9 +178,9 @@ public class ItemValidationTest extends InitExtensions {
|
|||
"</message>");
|
||||
|
||||
Stanza message = PacketParserUtils.parseMessage(parser);
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.EVENT.getXmlns());
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns());
|
||||
EventElement event = (EventElement) eventExt;
|
||||
ExtensionElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
NamedElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
|
||||
assertTrue(itemExt instanceof PayloadItem<?>);
|
||||
PayloadItem<?> item = (PayloadItem<?>) itemExt;
|
||||
|
@ -209,7 +210,7 @@ public class ItemValidationTest extends InitExtensions {
|
|||
"</message>");
|
||||
|
||||
Stanza message = PacketParserUtils.parseMessage(parser);
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.EVENT.getXmlns());
|
||||
ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns());
|
||||
|
||||
assertTrue(eventExt instanceof EventElement);
|
||||
EventElement event = (EventElement) eventExt;
|
||||
|
@ -218,7 +219,7 @@ public class ItemValidationTest extends InitExtensions {
|
|||
assertTrue(event.getExtensions().get(0) instanceof ItemsExtension);
|
||||
assertEquals(1, ((ItemsExtension) event.getExtensions().get(0)).items.size());
|
||||
|
||||
ExtensionElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
NamedElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0);
|
||||
assertTrue(itemExt instanceof PayloadItem<?>);
|
||||
PayloadItem<?> item = (PayloadItem<?>) itemExt;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2018 Timothy Pitt
|
||||
* Copyright 2018 Timothy Pitt, Florian Schmaus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -24,17 +24,25 @@ import java.util.List;
|
|||
|
||||
import org.jivesoftware.smack.SmackException;
|
||||
import org.jivesoftware.smack.ThreadedDummyConnection;
|
||||
import org.jivesoftware.smack.XMPPConnection;
|
||||
import org.jivesoftware.smack.XMPPException;
|
||||
import org.jivesoftware.smack.packet.IQ.Type;
|
||||
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||
import org.jivesoftware.smack.test.util.TestUtils;
|
||||
import org.jivesoftware.smack.util.PacketParserUtils;
|
||||
import org.jivesoftware.smackx.pubsub.packet.PubSub;
|
||||
|
||||
import org.jivesoftware.smackx.pubsub.Affiliation.AffiliationNamespace;
|
||||
import org.jivesoftware.smackx.pubsub.packet.PubSub;
|
||||
import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace;
|
||||
|
||||
import org.jivesoftware.util.ConnectionUtils;
|
||||
import org.jivesoftware.util.Protocol;
|
||||
import org.junit.Test;
|
||||
import org.jxmpp.jid.JidTestUtil;
|
||||
import org.jxmpp.jid.impl.JidCreate;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
|
||||
public class PubSubNodeTest {
|
||||
public class PubSubNodeTest extends SmackTestSuite {
|
||||
|
||||
@Test
|
||||
public void modifySubscriptionsAsOwnerTest() throws InterruptedException, SmackException, IOException, XMPPException, Exception {
|
||||
|
@ -55,7 +63,7 @@ public class PubSubNodeTest {
|
|||
|
||||
XmlPullParser parser = TestUtils.getIQParser(request.toXML().toString());
|
||||
PubSub pubsubResult = (PubSub) PacketParserUtils.parseIQ(parser);
|
||||
SubscriptionsExtension subElem = pubsubResult.getExtension(PubSubElementType.SUBSCRIPTIONS);
|
||||
SubscriptionsExtension subElem = pubsubResult.getExtension(PubSubElementType.SUBSCRIPTIONS_OWNER);
|
||||
List<Subscription> subscriptions = subElem.getSubscriptions();
|
||||
assertEquals(2, subscriptions.size());
|
||||
|
||||
|
@ -67,4 +75,36 @@ public class PubSubNodeTest {
|
|||
assertEquals("juliet@capulet.org", sub2.getJid().toString());
|
||||
assertEquals(Subscription.State.none, sub2.getState());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAffiliationsAsOwnerTest() throws InterruptedException, SmackException, IOException, XMPPException, Exception {
|
||||
Protocol protocol = new Protocol();
|
||||
XMPPConnection connection = ConnectionUtils.createMockedConnection(protocol, JidTestUtil.FULL_JID_1_RESOURCE_1);
|
||||
|
||||
PubSubManager mgr = new PubSubManager(connection, JidTestUtil.PUBSUB_EXAMPLE_ORG);
|
||||
Node testNode = new LeafNode(mgr, "princely_musings");
|
||||
|
||||
List<Affiliation> affiliations = Arrays.asList(
|
||||
new Affiliation(JidTestUtil.BARE_JID_1, Affiliation.Type.member),
|
||||
new Affiliation(JidTestUtil.BARE_JID_2, Affiliation.Type.publisher)
|
||||
);
|
||||
AffiliationsExtension affiliationsExtension = new AffiliationsExtension(AffiliationNamespace.owner, affiliations);
|
||||
PubSub response = new PubSub(JidTestUtil.PUBSUB_EXAMPLE_ORG, Type.result, PubSubNamespace.owner);
|
||||
response.addExtension(affiliationsExtension);
|
||||
protocol.addResponse(response);
|
||||
|
||||
List<Affiliation> returnedAffiliations = testNode.getAffiliationsAsOwner();
|
||||
|
||||
PubSub request = (PubSub) protocol.getRequests().get(0);
|
||||
assertEquals("http://jabber.org/protocol/pubsub#owner", request.getChildElementNamespace());
|
||||
assertEquals("pubsub", request.getChildElementName());
|
||||
|
||||
Affiliation affiliationOne = returnedAffiliations.get(0);
|
||||
assertEquals(affiliationOne.getJid(), JidTestUtil.BARE_JID_1);
|
||||
assertEquals(affiliationOne.getAffiliation(), Affiliation.Type.member);
|
||||
|
||||
Affiliation affiliationTwo = returnedAffiliations.get(1);
|
||||
assertEquals(affiliationTwo.getJid(), JidTestUtil.BARE_JID_2);
|
||||
assertEquals(affiliationTwo.getAffiliation(), Affiliation.Type.publisher);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ public class PubSubProviderTest {
|
|||
// @formatter:on
|
||||
XmlPullParser parser = TestUtils.getIQParser(resultStanza);
|
||||
PubSub pubsubResult = (PubSub) PacketParserUtils.parseIQ(parser);
|
||||
SubscriptionsExtension subElem = pubsubResult.getExtension(PubSubElementType.SUBSCRIPTIONS);
|
||||
SubscriptionsExtension subElem = pubsubResult.getExtension(PubSubElementType.SUBSCRIPTIONS_OWNER);
|
||||
List<Subscription> subscriptions = subElem.getSubscriptions();
|
||||
assertEquals(2, subscriptions.size());
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue