commit e62c7b7ce80b21e78dbed5308d01f36f6385b235
parent 869111df03b86d8254a2708e431a7b58c5c80ff7
Author: Daniel Gultsch <daniel@gultsch.de>
Date:   Sun,  5 Jun 2016 19:29:03 +0200
fix CSI, added tests for carbons and streamhost
Diffstat:
9 files changed, 112 insertions(+), 29 deletions(-)
diff --git a/src/main/java/eu/siacs/ComplianceTester.java b/src/main/java/eu/siacs/ComplianceTester.java
@@ -6,7 +6,6 @@ import eu.siacs.compliance.suites.TestSuiteFactory;
 import rocks.xmpp.addr.Jid;
 import rocks.xmpp.core.XmppException;
 import rocks.xmpp.core.sasl.AuthenticationException;
-import rocks.xmpp.core.session.XmppClient;
 
 public class ComplianceTester {
 
@@ -18,12 +17,13 @@ public class ComplianceTester {
         }
         Jid jid = Jid.of(args[0]);
         String password = args[1];
-        XmppClient xmppClient = XmppClient.create(jid.getDomain());
-        try {
-            xmppClient.connect();
-            xmppClient.login(jid.getLocal(), password);
+        runTestSuite(EverythingTestSuite.class, jid, password);
+    }
+
+    private static void runTestSuite(Class <? extends AbstractTestSuite> clazz, Jid jid, String password) {
+         try {
             try {
-                AbstractTestSuite testSuite = TestSuiteFactory.create(EverythingTestSuite.class, xmppClient);
+                AbstractTestSuite testSuite = TestSuiteFactory.create(clazz, jid, password);
                 System.out.println("Use compliance suite '"+testSuite.getName()+"' to test "+jid.getDomain()+"\n");
                 testSuite.run();
                 System.out.println("\n"+testSuite.getName() + ": " + testSuite.result());
diff --git a/src/main/java/eu/siacs/compliance/extensions/csi/ClientStateIndication.java b/src/main/java/eu/siacs/compliance/extensions/csi/ClientStateIndication.java
@@ -0,0 +1,13 @@
+package eu.siacs.compliance.extensions.csi;
+
+import rocks.xmpp.core.stream.model.StreamFeature;
+
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchema;
+
+@XmlRootElement(name="csi")
+public class ClientStateIndication extends StreamFeature {
+
+    public static final String NAMESPACE = "urn:xmpp:csi:0";
+}
diff --git a/src/main/java/eu/siacs/compliance/extensions/csi/package-info.java b/src/main/java/eu/siacs/compliance/extensions/csi/package-info.java
@@ -0,0 +1,8 @@
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlSchema(namespace = ClientStateIndication.NAMESPACE, elementFormDefault = XmlNsForm.QUALIFIED)
+package eu.siacs.compliance.extensions.csi;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlSchema;
+\ No newline at end of file
diff --git a/src/main/java/eu/siacs/compliance/suites/AbstractTestSuite.java b/src/main/java/eu/siacs/compliance/suites/AbstractTestSuite.java
@@ -3,6 +3,8 @@ package eu.siacs.compliance.suites;
 import eu.siacs.compliance.tests.AbstractTest;
 import eu.siacs.compliance.Result;
 import eu.siacs.compliance.tests.TestFactory;
+import rocks.xmpp.addr.Jid;
+import rocks.xmpp.core.XmppException;
 import rocks.xmpp.core.session.XmppClient;
 
 import java.util.Collections;
@@ -12,17 +14,24 @@ import java.util.List;
 public abstract class AbstractTestSuite {
 
     private final XmppClient mXmppClient;
+    private final Jid mJid;
+    private final String mPassword;
 
     private HashMap<Class<?extends AbstractTest>,Result> mTestResults = new HashMap<>();
 
-    public AbstractTestSuite(XmppClient client) {
+    public AbstractTestSuite(XmppClient client, Jid jid, String password) {
         mXmppClient = client;
+        mJid = jid;
+        mPassword = password;
     }
 
-    public void run() {
+    public void run() throws XmppException {
+        mXmppClient.connect();
+        mXmppClient.login(mJid.getLocal(), mPassword);
         for(Class<? extends AbstractTest> test : getTests()) {
             run(test);
         }
+        mXmppClient.close();
         int passed = Collections.frequency(mTestResults.values(),Result.PASSED);
         System.out.println("passed "+passed+"/"+mTestResults.size());
     }
diff --git a/src/main/java/eu/siacs/compliance/suites/EverythingTestSuite.java b/src/main/java/eu/siacs/compliance/suites/EverythingTestSuite.java
@@ -1,6 +1,7 @@
 package eu.siacs.compliance.suites;
 
 import eu.siacs.compliance.tests.*;
+import rocks.xmpp.addr.Jid;
 import rocks.xmpp.core.session.XmppClient;
 
 import java.util.Arrays;
@@ -12,8 +13,8 @@ import java.util.List;
  */
 public class EverythingTestSuite extends AbstractTestSuite {
 
-    public EverythingTestSuite(XmppClient client) {
-        super(client);
+    public EverythingTestSuite(XmppClient client, Jid jid, String password) {
+        super(client, jid, password);
     }
 
     @Override
@@ -21,14 +22,16 @@ public class EverythingTestSuite extends AbstractTestSuite {
         return Arrays.asList(
                 RosterVersioning.class,
                 StreamManagement.class,
-                CSI.class,
+                MessageCarbons.class,
                 Blocking.class,
                 MAM.class,
                 Push.class,
                 EntityCapabilities.class,
                 MultiUserChat.class,
                 HttpUpload.class,
-                PEP.class
+                PEP.class,
+                CSI.class,
+                Proxy65.class
         );
     }
 
diff --git a/src/main/java/eu/siacs/compliance/suites/TestSuiteFactory.java b/src/main/java/eu/siacs/compliance/suites/TestSuiteFactory.java
@@ -1,15 +1,20 @@
 package eu.siacs.compliance.suites;
 
+import eu.siacs.compliance.extensions.csi.ClientStateIndication;
+import rocks.xmpp.addr.Jid;
+import rocks.xmpp.core.session.Extension;
 import rocks.xmpp.core.session.XmppClient;
+import rocks.xmpp.core.session.XmppSessionConfiguration;
 
 public class TestSuiteFactory {
 
-    public static AbstractTestSuite create(Class <? extends AbstractTestSuite> clazz, XmppClient client) throws AbstractTestSuite.TestSuiteCreationException {
-        if (client == null) {
-            throw new AbstractTestSuite.TestSuiteCreationException();
-        }
+    public static AbstractTestSuite create(Class <? extends AbstractTestSuite> clazz, Jid jid, String password) throws AbstractTestSuite.TestSuiteCreationException {
+        XmppSessionConfiguration configuration = XmppSessionConfiguration.builder()
+                .extensions(Extension.of(ClientStateIndication.class))
+                .build();
+        final XmppClient client = XmppClient.create(jid.getDomain(),configuration);
         try {
-            AbstractTestSuite testSuite = clazz.getDeclaredConstructor(XmppClient.class).newInstance(client);
+            AbstractTestSuite testSuite = clazz.getDeclaredConstructor(XmppClient.class, Jid.class, String.class).newInstance(client, jid, password);
             return testSuite;
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/src/main/java/eu/siacs/compliance/tests/CSI.java b/src/main/java/eu/siacs/compliance/tests/CSI.java
@@ -1,28 +1,21 @@
 package eu.siacs.compliance.tests;
 
+import eu.siacs.compliance.extensions.csi.ClientStateIndication;
 import rocks.xmpp.core.session.XmppClient;
+import rocks.xmpp.core.stream.model.StreamFeature;
 
-import java.util.Arrays;
-import java.util.List;
-
-public class CSI extends AbstractDiscoTest {
+public class CSI extends AbstractStreamFeatureTest {
 
     public CSI(XmppClient client) {
         super(client);
     }
 
     @Override
-    List<String> getNamespaces() {
-        return Arrays.asList("urn:xmpp:carbons:2");
+    Class<? extends StreamFeature> getStreamFeature() {
+        return ClientStateIndication.class;
     }
 
     @Override
-    boolean checkOnServer() {
-        return true;
-    }
-
-
-    @Override
     public String getName() {
         return "XEP-0352: Client State Indication";
     }
diff --git a/src/main/java/eu/siacs/compliance/tests/MessageCarbons.java b/src/main/java/eu/siacs/compliance/tests/MessageCarbons.java
@@ -0,0 +1,29 @@
+package eu.siacs.compliance.tests;
+
+import rocks.xmpp.core.session.XmppClient;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class MessageCarbons extends AbstractDiscoTest {
+
+    public MessageCarbons(XmppClient client) {
+        super(client);
+    }
+
+    @Override
+    List<String> getNamespaces() {
+        return Arrays.asList("urn:xmpp:carbons:2");
+    }
+
+    @Override
+    boolean checkOnServer() {
+        return true;
+    }
+
+
+    @Override
+    public String getName() {
+        return "XEP-0280: Message Carbons";
+    }
+}
diff --git a/src/main/java/eu/siacs/compliance/tests/Proxy65.java b/src/main/java/eu/siacs/compliance/tests/Proxy65.java
@@ -0,0 +1,22 @@
+package eu.siacs.compliance.tests;
+
+import rocks.xmpp.core.session.XmppClient;
+import rocks.xmpp.extensions.bytestreams.s5b.model.Socks5ByteStream;
+
+public class Proxy65 extends AbstractServiceTest {
+
+    public Proxy65(XmppClient client) {
+        super(client);
+    }
+
+    @Override
+    public String getNamespace() {
+        return Socks5ByteStream.NAMESPACE;
+    }
+
+
+    @Override
+    public String getName() {
+        return "XEP-0065: SOCKS5 Bytestreams (Proxy)";
+    }
+}