mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-17 04:32:04 +01:00
1e57f1c659
Delete also all "All rights reserved" statements, as they are unnecessary and conflict with checkstyle's header check. Delete unused imports.
384 lines
16 KiB
Java
384 lines
16 KiB
Java
/**
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package org.jivesoftware.smack.packet;
|
|
|
|
import org.jivesoftware.smack.provider.PrivacyProvider;
|
|
import org.jivesoftware.smack.test.SmackTestCase;
|
|
import org.xmlpull.mxp1.MXParser;
|
|
import org.xmlpull.v1.XmlPullParser;
|
|
import org.xmlpull.v1.XmlPullParserException;
|
|
|
|
import java.io.StringReader;
|
|
|
|
/**
|
|
* Test the PrivacyProvider class with valids privacy xmls
|
|
*
|
|
* @author Francisco Vives
|
|
*/
|
|
public class PrivacyProviderTest extends SmackTestCase {
|
|
|
|
/**
|
|
* Constructor for PrivacyTest.
|
|
* @param arg0
|
|
*/
|
|
public PrivacyProviderTest(String arg0) {
|
|
super(arg0);
|
|
}
|
|
|
|
public static void main(String args[]) {
|
|
try {
|
|
new PrivacyProviderTest(null).testFull();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
System.exit(1);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check the parser with an xml with all kind of stanzas.
|
|
* To create the xml string based from an xml file, replace:\n with: "\n + "
|
|
*/
|
|
public void testFull() {
|
|
// Make the XML to test
|
|
String xml = ""
|
|
+ " <iq type='result' id='getlist2' to='romeo@example.net/orchard'> "
|
|
+ " <query xmlns='jabber:iq:privacy'> "
|
|
+ " <active name='testFilter'/> "
|
|
+ " <default name='testSubscription'/> "
|
|
+ " <list name='testFilter'> "
|
|
+ " <item type='jid' "
|
|
+ " value='tybalt@example.com' "
|
|
+ " action='deny' "
|
|
+ " order='1'/> "
|
|
+ " <item action='allow' order='2'> "
|
|
+ " <message/> "
|
|
+ " <presence-in/> "
|
|
+ " <presence-out/> "
|
|
+ " <iq/> "
|
|
+ " </item> "
|
|
+ " </list> "
|
|
+ " <list name='testSubscription'> "
|
|
+ " <item type='subscription' "
|
|
+ " value='both' "
|
|
+ " action='allow' "
|
|
+ " order='10'/> "
|
|
+ " <item type='subscription' "
|
|
+ " value='to' "
|
|
+ " action='allow' "
|
|
+ " order='11'/> "
|
|
+ " <item type='subscription' "
|
|
+ " value='from' "
|
|
+ " action='allow' "
|
|
+ " order='12'/> "
|
|
+ " <item type='subscription' "
|
|
+ " value='none' "
|
|
+ " action='deny' "
|
|
+ " order='5'> "
|
|
+ " <message/> "
|
|
+ " </item> "
|
|
+ " <item action='deny' order='15'/> "
|
|
+ " </list> "
|
|
+ " <list name='testJID'> "
|
|
+ " <item type='jid' "
|
|
+ " value='juliet@example.com' "
|
|
+ " action='allow' "
|
|
+ " order='6'/> "
|
|
+ " <item type='jid' "
|
|
+ " value='benvolio@example.org/palm' "
|
|
+ " action='deny' "
|
|
+ " order='7'/> "
|
|
+ " <item type='jid' "
|
|
+ " action='allow' "
|
|
+ " order='42'/> "
|
|
+ " <item action='deny' order='666'/> "
|
|
+ " </list> "
|
|
+ " <list name='testGroup'> "
|
|
+ " <item type='group' "
|
|
+ " value='Enemies' "
|
|
+ " action='deny' "
|
|
+ " order='4'> "
|
|
+ " <message/> "
|
|
+ " </item> "
|
|
+ " <item action='deny' order='666'/> "
|
|
+ " </list> "
|
|
+ " <list name='testEmpty'/> "
|
|
+ " </query> "
|
|
+ " <error type='cancel'> "
|
|
+ " <item-not-found "
|
|
+ " xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> "
|
|
+ " </error> "
|
|
+ "</iq> ";
|
|
|
|
try {
|
|
// Create the xml parser
|
|
XmlPullParser parser = getParserFromXML(xml);
|
|
// Create a packet from the xml
|
|
Privacy packet = (Privacy) (new PrivacyProvider()).parseIQ(parser);
|
|
|
|
// check if it exist
|
|
assertNotNull(packet);
|
|
// assertEquals(xml, packet.getChildElementXML());
|
|
|
|
// check the default and active names
|
|
assertEquals("testFilter", packet.getActiveName());
|
|
assertEquals("testSubscription", packet.getDefaultName());
|
|
|
|
// check the list
|
|
assertEquals(2, packet.getPrivacyList("testFilter").size());
|
|
assertEquals(5, packet.getPrivacyList("testSubscription").size());
|
|
assertEquals(4, packet.getPrivacyList("testJID").size());
|
|
assertEquals(2, packet.getPrivacyList("testGroup").size());
|
|
assertEquals(0, packet.getPrivacyList("testEmpty").size());
|
|
|
|
// check each privacy item
|
|
PrivacyItem item = packet.getItem("testGroup", 4);
|
|
assertEquals("Enemies", item.getValue());
|
|
assertEquals(PrivacyItem.Type.group, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(true, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(false, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testFilter", 1);
|
|
assertEquals("tybalt@example.com", item.getValue());
|
|
assertEquals(PrivacyItem.Type.jid, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testFilter", 2);
|
|
assertEquals(null, item.getValue());
|
|
assertEquals(null, item.getType());
|
|
assertEquals(true, item.isAllow());
|
|
assertEquals(true, item.isFilterMessage());
|
|
assertEquals(true, item.isFilterIQ());
|
|
assertEquals(true, item.isFilterPresence_in());
|
|
assertEquals(true, item.isFilterPresence_out());
|
|
assertEquals(false, item.isFilterEverything());
|
|
|
|
// TEST THE testSubscription LIST
|
|
item = packet.getItem("testSubscription", 10);
|
|
assertEquals("both", item.getValue());
|
|
assertEquals(PrivacyItem.Type.subscription, item.getType());
|
|
assertEquals(true, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testSubscription", 11);
|
|
assertEquals("to", item.getValue());
|
|
assertEquals(PrivacyItem.Type.subscription, item.getType());
|
|
assertEquals(true, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testSubscription", 12);
|
|
assertEquals("from", item.getValue());
|
|
assertEquals(PrivacyItem.Type.subscription, item.getType());
|
|
assertEquals(true, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testSubscription", 5);
|
|
assertEquals("none", item.getValue());
|
|
assertEquals(PrivacyItem.Type.subscription, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(true, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(false, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testSubscription", 15);
|
|
assertEquals(null, item.getValue());
|
|
assertEquals(null, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
// TEST THE testJID LIST
|
|
|
|
item = packet.getItem("testJID", 6);
|
|
assertEquals("juliet@example.com", item.getValue());
|
|
assertEquals(PrivacyItem.Type.jid, item.getType());
|
|
assertEquals(true, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testJID", 7);
|
|
assertEquals("benvolio@example.org/palm", item.getValue());
|
|
assertEquals(PrivacyItem.Type.jid, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testJID", 42);
|
|
assertEquals(null, item.getValue());
|
|
assertEquals(PrivacyItem.Type.jid, item.getType());
|
|
assertEquals(true, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testJID", 666);
|
|
assertEquals(null, item.getValue());
|
|
assertEquals(null, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
// TEST THE testGroup LIST
|
|
|
|
item = packet.getItem("testGroup", 4);
|
|
assertEquals("Enemies", item.getValue());
|
|
assertEquals(PrivacyItem.Type.group, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(true, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(false, item.isFilterEverything());
|
|
|
|
item = packet.getItem("testGroup", 666);
|
|
assertEquals(null, item.getValue());
|
|
assertEquals(null, item.getType());
|
|
assertEquals(false, item.isAllow());
|
|
assertEquals(false, item.isFilterMessage());
|
|
assertEquals(false, item.isFilterIQ());
|
|
assertEquals(false, item.isFilterPresence_in());
|
|
assertEquals(false, item.isFilterPresence_out());
|
|
assertEquals(true, item.isFilterEverything());
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Check the parser with an xml with empty lists. It includes the active,
|
|
* default and special list.
|
|
* To create the xml string based from an xml file, replace:\n with: "\n + "
|
|
*/
|
|
public void testEmptyLists() {
|
|
// Make the XML to test
|
|
String xml = ""
|
|
+ " <iq type='result' id='getlist1' to='romeo@example.net/orchard'> "
|
|
+ " <query xmlns='jabber:iq:privacy'> "
|
|
+ " <active/> "
|
|
+ " <default name='public'/> "
|
|
+ " <list name='public'/> "
|
|
+ " <list name='private'/> "
|
|
+ " <list name='special'/> "
|
|
+ " </query> "
|
|
+ " </iq> ";
|
|
|
|
try {
|
|
// Create the xml parser
|
|
XmlPullParser parser = getParserFromXML(xml);
|
|
// Create a packet from the xml
|
|
Privacy packet = (Privacy) (new PrivacyProvider()).parseIQ(parser);
|
|
|
|
assertNotNull(packet);
|
|
assertNotNull(packet.getChildElementXML());
|
|
|
|
assertEquals("public", packet.getDefaultName());
|
|
assertEquals(null, packet.getActiveName());
|
|
|
|
assertEquals(0, packet.getPrivacyList("public").size());
|
|
assertEquals(0, packet.getPrivacyList("private").size());
|
|
assertEquals(0, packet.getPrivacyList("special").size());
|
|
|
|
assertEquals(true, packet.isDeclineActiveList());
|
|
assertEquals(false, packet.isDeclineDefaultList());
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check the parser with an xml with empty lists. It includes the active,
|
|
* default and special list.
|
|
* To create the xml string based from an xml file, replace:\n with: "\n + "
|
|
*/
|
|
public void testDeclineLists() {
|
|
// Make the XML to test
|
|
String xml = ""
|
|
+ " <iq type='result' id='getlist1' to='romeo@example.net/orchard'> "
|
|
+ " <query xmlns='jabber:iq:privacy'> "
|
|
+ " <active/> "
|
|
+ " <default/> "
|
|
+ " </query> "
|
|
+ " </iq> ";
|
|
|
|
try {
|
|
// Create the xml parser
|
|
XmlPullParser parser = getParserFromXML(xml);
|
|
// Create a packet from the xml
|
|
Privacy packet = (Privacy) (new PrivacyProvider()).parseIQ(parser);
|
|
|
|
assertNotNull(packet);
|
|
|
|
assertEquals(null, packet.getDefaultName());
|
|
assertEquals(null, packet.getActiveName());
|
|
|
|
assertEquals(true, packet.isDeclineActiveList());
|
|
assertEquals(true, packet.isDeclineDefaultList());
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
fail(e.getMessage());
|
|
}
|
|
}
|
|
|
|
private XmlPullParser getParserFromXML(String xml) throws XmlPullParserException {
|
|
MXParser parser = new MXParser();
|
|
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
|
|
parser.setInput(new StringReader(xml));
|
|
return parser;
|
|
}
|
|
|
|
protected int getMaxConnections() {
|
|
return 0;
|
|
}
|
|
}
|