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.After;
16 import org.junit.Test;
19 * Unit test for {@link DefaultFcpClient}.
21 * @author <a href="bombe@freenetproject.org">David ‘Bombe’ Roden</a>
23 public class DefaultFcpClientTest {
25 private final ExecutorService threadPool = Executors.newCachedThreadPool();
26 private final FakeTcpServer fcpServer;
27 private final DefaultFcpClient fcpClient;
29 public DefaultFcpClientTest() throws IOException {
30 fcpServer = new FakeTcpServer(threadPool);
31 fcpClient = new DefaultFcpClient(threadPool, "localhost", fcpServer.getPort(), () -> "Test", () -> "2.0");
35 public void tearDown() throws IOException {
40 public void defaultFcpClientCanGenerateKeypair() throws ExecutionException, InterruptedException, IOException {
41 Future<FcpKeyPair> keyPairFuture = fcpClient.generateKeypair().execute();
43 fcpServer.collectUntil(is("EndMessage"));
44 fcpServer.writeLine("SSKKeypair\n"
45 + "InsertURI=freenet:SSK@AKTTKG6YwjrHzWo67laRcoPqibyiTdyYufjVg54fBlWr,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM/\n"
46 + "RequestURI=freenet:SSK@BnHXXv3Fa43w~~iz1tNUd~cj4OpUuDjVouOWZ5XlpX0,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM,AQABAAE/\n"
47 + "Identifier=My Identifier from GenerateSSK\n"
49 FcpKeyPair keyPair = keyPairFuture.get();
50 assertThat(keyPair.getPublicKey(),
51 is("freenet:SSK@BnHXXv3Fa43w~~iz1tNUd~cj4OpUuDjVouOWZ5XlpX0,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM,AQABAAE/"));
52 assertThat(keyPair.getPrivateKey(), is(
53 "freenet:SSK@AKTTKG6YwjrHzWo67laRcoPqibyiTdyYufjVg54fBlWr,AwUSJG5ZS-FDZTqnt6skTzhxQe08T-fbKXj8aEHZsXM/"));
56 private void connectNode() throws InterruptedException, ExecutionException, IOException {
57 fcpServer.connect().get();
58 fcpServer.collectUntil(is("EndMessage"));
59 fcpServer.writeLine("NodeHello\n"
61 + "ConnectionIdentifier=754595fc35701d76096d8279d15c57e6\n"
62 + "Version=Fred,0.7,1.0,1231\n"
64 + "NodeLanguage=ENGLISH\n"
65 + "ExtRevision=23771\n"
69 + "CompressionCodecs=3 - GZIP(0), BZIP2(1), LZMA(2)\n"
70 + "Revision=@custom@\n"