commit ef30ec8e55603a8bc5d008845278bb9e520405c6
parent 039770326cf30fc0dfe604f51dc9c9820c98b22b
Author: Daniel Gultsch <daniel@gultsch.de>
Date:   Mon, 23 Jan 2017 00:38:41 +0100
add test for XEP-0368
Diffstat:
3 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
@@ -22,6 +22,11 @@
             <artifactId>xmpp-extensions-client</artifactId>
             <version>0.7.0</version>
         </dependency>
+        <dependency>
+            <groupId>de.measite.minidns</groupId>
+            <artifactId>minidns-hla</artifactId>
+            <version>0.2.0</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/eu/siacs/compliance/suites/Conversations.java b/src/main/java/eu/siacs/compliance/suites/Conversations.java
@@ -16,12 +16,13 @@ public class Conversations extends AdvancedServerIM {
 
     @Override
     List<Class<? extends AbstractTest>> getTests() {
-        return Stream.concat(super.getTests().stream(), Arrays.asList(
+        return Stream.concat(super.getTests().stream(), Stream.of(
                 CSI.class,
                 HttpUpload.class,
                 Proxy65.class,
-                Push.class
-        ).stream()).collect(Collectors.toList());
+                Push.class,
+                XmppOverTls.class
+        )).collect(Collectors.toList());
     }
 
     @Override
diff --git a/src/main/java/eu/siacs/compliance/tests/XmppOverTls.java b/src/main/java/eu/siacs/compliance/tests/XmppOverTls.java
@@ -0,0 +1,46 @@
+package eu.siacs.compliance.tests;
+
+import de.measite.minidns.hla.ResolverApi;
+import de.measite.minidns.hla.ResolverResult;
+import de.measite.minidns.record.SRV;
+import eu.siacs.compliance.Result;
+import rocks.xmpp.core.session.XmppClient;
+
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+import java.io.IOException;
+
+public class XmppOverTls extends AbstractTest {
+
+    public XmppOverTls(XmppClient client) {
+        super(client);
+    }
+
+    @Override
+    public Result run() {
+        String domain = client.getDomain().getDomain();
+        try {
+            final SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
+            ResolverResult<SRV> results = ResolverApi.INSTANCE.resolve("_xmpps-client._tcp." + domain, SRV.class);
+            for(SRV record : results.getAnswers()) {
+                try {
+                    SSLSocket socket = (SSLSocket) sslSocketFactory.createSocket(record.name.toString(),record.port);
+                    socket.setSoTimeout(1000);
+                    socket.startHandshake();
+                    socket.close();
+                    return Result.PASSED;
+                } catch (IOException e) {
+                    //ignored
+                }
+            }
+        } catch (Exception e) {
+            return Result.FAILED;
+        }
+        return Result.FAILED;
+    }
+
+    @Override
+    public String getName() {
+        return "XEP-0368: SRV records for XMPP over TLS";
+    }
+}