serial: switch from SSL to CryptUtils
[nikiroo-utils.git] / src / be / nikiroo / utils / test / SerialServerTest.java
index 67ba1610ef7725c4d8939174bfe24f5daa5aa584..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,
@@ -43,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(
@@ -55,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 {
@@ -76,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,
@@ -95,7 +98,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -106,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 {
@@ -138,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,
@@ -159,7 +162,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -170,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 {
@@ -205,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,
@@ -224,7 +227,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -235,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 {
@@ -277,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,
@@ -309,18 +312,15 @@ class SerialServerTest extends TestLauncher {
 
                                ServerBridge br = null;
                                if (bridge) {
-                                       br = new ServerBridge(0, ssl, "", port, ssl) {
-                                               @Override
-                                               protected void onError(Exception e) {
-                                               }
-                                       };
+                                       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 {
@@ -345,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,
@@ -364,7 +364,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -375,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 {
@@ -407,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,
@@ -428,7 +428,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -439,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 {
@@ -474,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,
@@ -493,7 +565,6 @@ class SerialServerTest extends TestLauncher {
 
                                        @Override
                                        protected void onError(Exception e) {
-                                               super.onError(e);
                                                err[0] = e;
                                        }
                                };
@@ -504,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 {
@@ -548,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));
                        }
                }
        }