serial: switch from SSL to CryptUtils
[nikiroo-utils.git] / src / be / nikiroo / utils / test / SerialServerTest.java
index 885ee8c0150bf01189113077c4d389f9f2d30834..a3f4f9ef4794455eac3862765fbbc8f3a684b33d 100644 (file)
@@ -1,5 +1,7 @@
 package be.nikiroo.utils.test;
 
+import java.net.URL;
+
 import be.nikiroo.utils.Version;
 import be.nikiroo.utils.serial.server.ConnectActionClientObject;
 import be.nikiroo.utils.serial.server.ConnectActionClientString;
@@ -11,18 +13,18 @@ import be.nikiroo.utils.serial.server.ServerString;
 
 class SerialServerTest extends TestLauncher {
        private TestLauncher createServerStringTestCases(final String[] args,
-                       final boolean ssl, final boolean bridge) {
-               final String ssls = (ssl ? "(ssl)" : "(plain text)");
+                       final String key, final boolean bridge) {
+               final String skey = (key != null ? "(encrypted)" : "(plain text)");
                final String bridges = (bridge ? " with bridge" : "");
                TestLauncher series = new TestLauncher(
-                               "ServerString " + ssls + bridges, args);
+                               "ServerString " + skey + bridges, args);
 
-               series.addTest(new TestCase("Simple connection " + ssls) {
+               series.addTest(new TestCase("Simple connection " + skey) {
                        @Override
                        public void test() throws Exception {
                                final String[] rec = new String[1];
 
-                               ServerString server = new ServerString(this.getName(), 0, ssl) {
+                               ServerString server = new ServerString(this.getName(), 0, key) {
                                        @Override
                                        protected String onRequest(
                                                        ConnectActionServerString action,
@@ -30,6 +32,10 @@ class SerialServerTest extends TestLauncher {
                                                        throws Exception {
                                                return null;
                                        }
+
+                                       @Override
+                                       protected void onError(Exception e) {
+                                       }
                                };
 
                                int port = server.getPort();
@@ -39,7 +45,8 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
 
                                        port = br.getPort();
                                        assertEquals(
@@ -51,7 +58,7 @@ class SerialServerTest extends TestLauncher {
 
                                try {
                                        try {
-                                               new ConnectActionClientObject(null, port, ssl) {
+                                               new ConnectActionClientObject(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
@@ -72,14 +79,14 @@ class SerialServerTest extends TestLauncher {
                        }
                });
 
-               series.addTest(new TestCase("Simple exchange " + ssls) {
+               series.addTest(new TestCase("Simple exchange " + skey) {
                        final String[] sent = new String[1];
                        final String[] recd = new String[1];
                        final Exception[] err = new Exception[1];
 
                        @Override
                        public void test() throws Exception {
-                               ServerString server = new ServerString(this.getName(), 0, ssl) {
+                               ServerString server = new ServerString(this.getName(), 0, key) {
                                        @Override
                                        protected String onRequest(
                                                        ConnectActionServerString action,
@@ -91,7 +98,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -102,14 +108,15 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
                                        port = br.getPort();
                                        br.start();
                                }
 
                                try {
                                        try {
-                                               new ConnectActionClientString(null, port, ssl) {
+                                               new ConnectActionClientString(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
@@ -134,14 +141,14 @@ class SerialServerTest extends TestLauncher {
                        }
                });
 
-               series.addTest(new TestCase("Multiple exchanges " + ssls) {
+               series.addTest(new TestCase("Multiple exchanges " + skey) {
                        final String[] sent = new String[3];
                        final String[] recd = new String[3];
                        final Exception[] err = new Exception[1];
 
                        @Override
                        public void test() throws Exception {
-                               ServerString server = new ServerString(this.getName(), 0, ssl) {
+                               ServerString server = new ServerString(this.getName(), 0, key) {
                                        @Override
                                        protected String onRequest(
                                                        ConnectActionServerString action,
@@ -155,7 +162,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -166,14 +172,15 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
                                        port = br.getPort();
                                        br.start();
                                }
 
                                try {
                                        try {
-                                               new ConnectActionClientString(null, port, ssl) {
+                                               new ConnectActionClientString(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
@@ -201,14 +208,14 @@ class SerialServerTest extends TestLauncher {
                        }
                });
 
-               series.addTest(new TestCase("Multiple call from client " + ssls) {
+               series.addTest(new TestCase("Multiple call from client " + skey) {
                        final String[] sent = new String[3];
                        final String[] recd = new String[3];
                        final Exception[] err = new Exception[1];
 
                        @Override
                        public void test() throws Exception {
-                               ServerString server = new ServerString(this.getName(), 0, ssl) {
+                               ServerString server = new ServerString(this.getName(), 0, key) {
                                        @Override
                                        protected String onRequest(
                                                        ConnectActionServerString action,
@@ -220,7 +227,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -231,14 +237,15 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
                                        port = br.getPort();
                                        br.start();
                                }
 
                                try {
                                        try {
-                                               new ConnectActionClientString(null, port, ssl) {
+                                               new ConnectActionClientString(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
@@ -273,18 +280,18 @@ class SerialServerTest extends TestLauncher {
        }
 
        private TestLauncher createServerObjectTestCases(final String[] args,
-                       final boolean ssl, final boolean bridge) {
-               final String ssls = (ssl ? "(ssl)" : "(plain text)");
+                       final String key, final boolean bridge) {
+               final String skey = (key != null ? "(encrypted)" : "(plain text)");
                final String bridges = (bridge ? " with bridge" : "");
                TestLauncher series = new TestLauncher(
-                               "ServerObject " + ssls + bridges, args);
+                               "ServerObject " + skey + bridges, args);
 
-               series.addTest(new TestCase("Simple connection " + ssls) {
+               series.addTest(new TestCase("Simple connection " + skey) {
                        @Override
                        public void test() throws Exception {
                                final Object[] rec = new Object[1];
 
-                               ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+                               ServerObject server = new ServerObject(this.getName(), 0, key) {
                                        @Override
                                        protected Object onRequest(
                                                        ConnectActionServerObject action,
@@ -292,6 +299,10 @@ class SerialServerTest extends TestLauncher {
                                                        throws Exception {
                                                return null;
                                        }
+
+                                       @Override
+                                       protected void onError(Exception e) {
+                                       }
                                };
 
                                int port = server.getPort();
@@ -301,19 +312,24 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
                                        port = br.getPort();
                                        br.start();
                                }
 
                                try {
                                        try {
-                                               new ConnectActionClientObject(null, port, ssl) {
+                                               new ConnectActionClientObject(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
                                                                rec[0] = true;
                                                        }
+
+                                                       @Override
+                                                       protected void onError(Exception e) {
+                                                       }
                                                }.connect();
                                        } finally {
                                                server.stop();
@@ -329,14 +345,14 @@ class SerialServerTest extends TestLauncher {
                        }
                });
 
-               series.addTest(new TestCase("Simple exchange " + ssls) {
+               series.addTest(new TestCase("Simple exchange " + skey) {
                        final Object[] sent = new Object[1];
                        final Object[] recd = new Object[1];
                        final Exception[] err = new Exception[1];
 
                        @Override
                        public void test() throws Exception {
-                               ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+                               ServerObject server = new ServerObject(this.getName(), 0, key) {
                                        @Override
                                        protected Object onRequest(
                                                        ConnectActionServerObject action,
@@ -348,7 +364,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -359,14 +374,15 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
                                        port = br.getPort();
                                        br.start();
                                }
 
                                try {
                                        try {
-                                               new ConnectActionClientObject(null, port, ssl) {
+                                               new ConnectActionClientObject(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
@@ -391,14 +407,14 @@ class SerialServerTest extends TestLauncher {
                        }
                });
 
-               series.addTest(new TestCase("Multiple exchanges " + ssls) {
+               series.addTest(new TestCase("Multiple exchanges " + skey) {
                        final Object[] sent = new Object[3];
                        final Object[] recd = new Object[3];
                        final Exception[] err = new Exception[1];
 
                        @Override
                        public void test() throws Exception {
-                               ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+                               ServerObject server = new ServerObject(this.getName(), 0, key) {
                                        @Override
                                        protected Object onRequest(
                                                        ConnectActionServerObject action,
@@ -412,7 +428,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -423,14 +438,15 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
                                        port = br.getPort();
                                        br.start();
                                }
 
                                try {
                                        try {
-                                               new ConnectActionClientObject(null, port, ssl) {
+                                               new ConnectActionClientObject(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
@@ -458,14 +474,86 @@ class SerialServerTest extends TestLauncher {
                        }
                });
 
-               series.addTest(new TestCase("Multiple call from client " + ssls) {
+               series.addTest(new TestCase("Object array of URLs " + skey) {
+                       final Object[] sent = new Object[1];
+                       final Object[] recd = new Object[1];
+                       final Exception[] err = new Exception[1];
+
+                       @Override
+                       public void test() throws Exception {
+                               ServerObject server = new ServerObject(this.getName(), 0, key) {
+                                       @Override
+                                       protected Object onRequest(
+                                                       ConnectActionServerObject action,
+                                                       Version clientVersion, Object data)
+                                                       throws Exception {
+                                               sent[0] = data;
+                                               return new Object[] { "ACK" };
+                                       }
+
+                                       @Override
+                                       protected void onError(Exception e) {
+                                               err[0] = e;
+                                       }
+                               };
+
+                               int port = server.getPort();
+
+                               server.start();
+
+                               ServerBridge br = null;
+                               if (bridge) {
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
+                                       port = br.getPort();
+                                       br.start();
+                               }
+
+                               try {
+                                       try {
+                                               new ConnectActionClientObject(null, port, key) {
+                                                       @Override
+                                                       public void action(Version serverVersion)
+                                                                       throws Exception {
+                                                               recd[0] = send(new Object[] {
+                                                                               "key",
+                                                                               new URL(
+                                                                                               "https://example.com/from_client"),
+                                                                               "https://example.com/from_client" });
+                                                       }
+                                               }.connect();
+                                       } finally {
+                                               server.stop();
+                                       }
+                               } finally {
+                                       if (br != null) {
+                                               br.stop();
+                                       }
+                               }
+
+                               if (err[0] != null) {
+                                       fail("An exception was thrown: " + err[0].getMessage());
+                               }
+
+                               Object[] sento = (Object[]) (sent[0]);
+                               Object[] recdo = (Object[]) (recd[0]);
+
+                               assertEquals("key", sento[0]);
+                               assertEquals("https://example.com/from_client",
+                                               ((URL) sento[1]).toString());
+                               assertEquals("https://example.com/from_client", sento[2]);
+                               assertEquals("ACK", recdo[0]);
+                       }
+               });
+
+               series.addTest(new TestCase("Multiple call from client " + skey) {
                        final Object[] sent = new Object[3];
                        final Object[] recd = new Object[3];
                        final Exception[] err = new Exception[1];
 
                        @Override
                        public void test() throws Exception {
-                               ServerObject server = new ServerObject(this.getName(), 0, ssl) {
+                               ServerObject server = new ServerObject(this.getName(), 0, key) {
                                        @Override
                                        protected Object onRequest(
                                                        ConnectActionServerObject action,
@@ -477,7 +565,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -488,14 +575,15 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl);
+                                       br = new ServerBridge(0, key, "", port, key);
+                                       br.setTraceHandler(null);
                                        port = br.getPort();
                                        br.start();
                                }
 
                                try {
                                        try {
-                                               new ConnectActionClientObject(null, port, ssl) {
+                                               new ConnectActionClientObject(null, port, key) {
                                                        @Override
                                                        public void action(Version serverVersion)
                                                                        throws Exception {
@@ -532,10 +620,10 @@ class SerialServerTest extends TestLauncher {
        public SerialServerTest(String[] args) {
                super("SerialServer test", args);
 
-               for (boolean ssl : new Boolean[] { false, true }) {
+               for (String key : new String[] { null, "" }) {
                        for (boolean bridge : new Boolean[] { false, true }) {
-                               addSeries(createServerObjectTestCases(args, ssl, bridge));
-                               addSeries(createServerStringTestCases(args, ssl, bridge));
+                               addSeries(createServerObjectTestCases(args, key, bridge));
+                               addSeries(createServerStringTestCases(args, key, bridge));
                        }
                }
        }