1 package net.pterodactylus.fcp.quelaton;
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
6 import java.io.IOException;
7 import java.util.concurrent.ExecutionException;
8 import java.util.concurrent.ExecutorService;
9 import java.util.concurrent.Executors;
10 import java.util.concurrent.Future;
12 import net.pterodactylus.fcp.FcpKeyPair;
13 import net.pterodactylus.fcp.fake.FakeTcpServer;
15 import org.junit.Test;
18 * Unit test for {@link DefaultFcpClient}.
20 * @author <a href="bombe@freenetproject.org">David ‘Bombe’ Roden</a>
22 public class DefaultFcpClientTest {
24 private final ExecutorService threadPool = Executors.newCachedThreadPool();
25 private final FakeTcpServer fcpServer;
26 private final DefaultFcpClient fcpClient;
28 public DefaultFcpClientTest() throws IOException {
29 fcpServer = new FakeTcpServer(threadPool);
30 fcpClient = new DefaultFcpClient(threadPool, "localhost", fcpServer.getPort(), () -> "Test", () -> "2.0");
34 public void defaultFcpClientCanGenerateKeypair() throws ExecutionException, InterruptedException, IOException {
35 Future<FcpKeyPair> keyPairFuture = fcpClient.generateKeypair().execute();
37 fcpServer.collectUntil(is("EndMessage"));
38 fcpServer.writeLine("SSKKeypair\n"
39 + "InsertURI=freenet:SSK@AKTTKG6YwjrHzWo67laRcoPqibyiTdyYufjVg54fBlWr,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM/\n"
40 + "RequestURI=freenet:SSK@BnHXXv3Fa43w~~iz1tNUd~cj4OpUuDjVouOWZ5XlpX0,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM,AQABAAE/\n"
41 + "Identifier=My Identifier from GenerateSSK\n"
43 FcpKeyPair keyPair = keyPairFuture.get();
44 assertThat(keyPair.getPublicKey(),
45 is("freenet:SSK@BnHXXv3Fa43w~~iz1tNUd~cj4OpUuDjVouOWZ5XlpX0,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM,AQABAAE/"));
46 assertThat(keyPair.getPrivateKey(), is(
47 "freenet:SSK@AKTTKG6YwjrHzWo67laRcoPqibyiTdyYufjVg54fBlWr,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM/"));
50 private void connectNode() throws InterruptedException, ExecutionException, IOException {
51 fcpServer.connect().get();
52 fcpServer.collectUntil(is("EndMessage"));
53 fcpServer.writeLine("NodeHello\n"
55 + "ConnectionIdentifier=754595fc35701d76096d8279d15c57e6\n"
56 + "Version=Fred,0.7,1.0,1231\n"
58 + "NodeLanguage=ENGLISH\n"
59 + "ExtRevision=23771\n"
63 + "CompressionCodecs=3 - GZIP(0), BZIP2(1), LZMA(2)\n"
64 + "Revision=@custom@\n"