fix warning with an assertion
[jSite2.git] / src / net / pterodactylus / util / fcp / FcpTest.java
index cedce1d..b07bb85 100644 (file)
 package net.pterodactylus.util.fcp;
 
 import java.io.IOException;
-import java.util.List;
-import java.util.Map;
 
 import junit.framework.TestCase;
-
+import net.pterodactylus.util.fcp.message.ClientHello;
+import net.pterodactylus.util.fcp.message.CloseConnectionDuplicateClientName;
+import net.pterodactylus.util.fcp.message.GenerateSSK;
+import net.pterodactylus.util.fcp.message.NodeHello;
 
 /**
- * TODO
+ * Tests various commands and the FCP connection.
+ * 
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
  * @version $Id$
  */
 public class FcpTest extends TestCase {
 
+       /** The FCP connection. */
        private FcpConnection fcpConnection;
-       
+
        /**
         * {@inheritDoc}
         */
        @Override
        protected void setUp() throws Exception {
-               fcpConnection = new FcpConnection("wing", "FcpTest");
+               fcpConnection = new FcpConnection("wing");
                fcpConnection.connect();
+               fcpConnection.sendMessage(new ClientHello("FcpTest"));
        }
-       
+
        /**
         * {@inheritDoc}
         */
@@ -51,32 +55,80 @@ public class FcpTest extends TestCase {
        protected void tearDown() throws Exception {
                fcpConnection.disconnect();
        }
-       
+
+       /**
+        * Tests the FCP connection be simply {@link #setUp() setting it up} and
+        * {@link #tearDown() tearing it down} again.
+        * 
+        * @throws FcpException
+        *             if an FCP error occurs
+        * @throws IOException
+        *             if an I/O error occurs
+        */
        public void testFcpConnection() throws FcpException, IOException {
+               /* do nothing. */
        }
-       
-       public void testListPeers() throws FcpException, IOException {
-               List<Map<String, String>> peers = fcpConnection.sendListPeers(true, true);
-               for (Map<String, String> peer: peers) {
-                       for (Map.Entry<String, String> entry: peer.entrySet()) {
-                               System.out.println(entry.getKey() + ": " + entry.getValue());
+
+//     public void testListPeers() throws FcpException, IOException {
+//             List<Map<String, String>> peers = fcpConnection.sendListPeers(true, true);
+//             for (Map<String, String> peer: peers) {
+//                     for (Map.Entry<String, String> entry: peer.entrySet()) {
+//                             System.out.println(entry.getKey() + ": " + entry.getValue());
+//                     }
+//             }
+//     }
+
+//     public void testListPeerNotes() throws FcpException, IOException {
+//             List<Map<String, String>> peers = fcpConnection.sendListPeerNotes("AY6rGAGjayoyQD2CkvQibf1Ct3mh6iwqyntzNpfRsiM");
+//             for (Map<String, String> peer: peers) {
+//                     for (Map.Entry<String, String> entry: peer.entrySet()) {
+//                             System.out.println(entry.getKey() + ": " + entry.getValue());
+//                     }
+//             }
+//     }
+
+       /**
+        * Generates an SSK key pair.
+        * 
+        * @throws FcpException
+        *             if an FCP error occurs
+        * @throws IOException
+        *             if an I/O error occurs
+        * @throws InterruptedException
+        *             if {@link Object#wait()} wakes up spuriously
+        */
+       public void testGenerateSSK() throws IOException, FcpException, InterruptedException {
+               final boolean[] result = new boolean[1];
+               FcpAdapter fcpAdapter = new FcpAdapter() {
+                       /**
+                        * @see net.pterodactylus.util.fcp.FcpAdapter#receivedNodeHello(net.pterodactylus.util.fcp.FcpConnection,
+                        *      net.pterodactylus.util.fcp.message.NodeHello)
+                        */
+                       @Override
+                       public void receivedNodeHello(FcpConnection fcpConnection, NodeHello nodeHello) {
+                               result[0] = true;
+                               synchronized (this) {
+                                       notify();
+                               }
                        }
-               }
-       }
-       
-       public void testListPeerNotes() throws FcpException, IOException {
-               List<Map<String, String>> peers = fcpConnection.sendListPeerNotes("AY6rGAGjayoyQD2CkvQibf1Ct3mh6iwqyntzNpfRsiM");
-               for (Map<String, String> peer: peers) {
-                       for (Map.Entry<String, String> entry: peer.entrySet()) {
-                               System.out.println(entry.getKey() + ": " + entry.getValue());
+
+                       /**
+                        * @see net.pterodactylus.util.fcp.FcpAdapter#receivedCloseConnectionDuplicateClientName(net.pterodactylus.util.fcp.FcpConnection,
+                        *      net.pterodactylus.util.fcp.message.CloseConnectionDuplicateClientName)
+                        */
+                       @Override
+                       public void receivedCloseConnectionDuplicateClientName(FcpConnection fcpConnection, CloseConnectionDuplicateClientName closeConnectionDuplicateClientName) {
+                               result[0] = false;
+                               synchronized (this) {
+                                       notify();
+                               }
                        }
+               };
+               synchronized (fcpAdapter) {
+                       fcpConnection.sendMessage(new GenerateSSK());
+                       fcpAdapter.wait();
                }
+               assertTrue("received NodeHello", result[0]);
        }
-       
-       public void testGenerateSSK() throws IOException, FcpException {
-               FcpKeyPair keyPair = fcpConnection.generateSSK();
-               System.out.println("PrivateKey: " + keyPair.getPrivateKey());
-               System.out.println("PublicKey: " + keyPair.getPublicKey());
-       }
-       
+
 }