xmpp-compliance-tester

XMPP Compliance Tester, forked from github.com/iNPUTmice/ComplianceTester
git clone https://git.in0rdr.ch/xmpp-compliance-tester.git
Log | Files | Refs | Pull requests |Archive | README | LICENSE

commit 35f4be8c4292f0ae6dd5dd7446a0788d6532efac
parent cac4752496a1d1ccb3745a4c80404bd1ed1c0234
Author: Daniel Gultsch <daniel@gultsch.de>
Date:   Sat, 22 Jul 2017 20:10:45 +0200

added omemo test to check for publish-options

Diffstat:
Msrc/main/java/eu/siacs/compliance/suites/Conversations.java | 3++-
Asrc/main/java/eu/siacs/compliance/tests/OMEMO.java | 44++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/src/main/java/eu/siacs/compliance/suites/Conversations.java b/src/main/java/eu/siacs/compliance/suites/Conversations.java @@ -21,7 +21,8 @@ public class Conversations extends AdvancedServerIM { HttpUpload.class, Proxy65.class, Push.class, - XmppOverTls.class + XmppOverTls.class, + OMEMO.class )).collect(Collectors.toList()); } diff --git a/src/main/java/eu/siacs/compliance/tests/OMEMO.java b/src/main/java/eu/siacs/compliance/tests/OMEMO.java @@ -0,0 +1,44 @@ +package eu.siacs.compliance.tests; + +import eu.siacs.compliance.Result; +import rocks.xmpp.core.session.XmppClient; +import rocks.xmpp.extensions.disco.ServiceDiscoveryManager; +import rocks.xmpp.extensions.disco.model.info.Identity; +import rocks.xmpp.extensions.disco.model.info.InfoNode; +import rocks.xmpp.util.concurrent.AsyncResult; + +import java.util.Set; +import java.util.concurrent.TimeUnit; + +public class OMEMO extends AbstractTest { + + public OMEMO(XmppClient client) { + super(client); + } + + @Override + public Result run() { + ServiceDiscoveryManager manager = client.getManager(ServiceDiscoveryManager.class); + AsyncResult<InfoNode> result = manager.discoverInformation(client.getConnectedResource().asBareJid()); + try { + final InfoNode infoNode = result.get(10, TimeUnit.SECONDS); + if (!infoNode.getFeatures().contains("http://jabber.org/protocol/pubsub#publish-options")) { + return Result.FAILED; + } + for(Identity identity : infoNode.getIdentities()) { + if ("pep".equalsIgnoreCase(identity.getType()) && "pubsub".equalsIgnoreCase(identity.getCategory())) { + return Result.PASSED; + } + } + return Result.FAILED; + } catch (Exception e) { + e.printStackTrace(); + return Result.FAILED; + } + } + + @Override + public String getName() { + return "XEP-0384: OMEMO Encryption"; + } +}