Add new “quelaton” FCP client API
[jFCPlib.git] / src / test / java / net / pterodactylus / fcp / quelaton / DefaultFcpClientTest.java
1 package net.pterodactylus.fcp.quelaton;
2
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5
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;
11
12 import net.pterodactylus.fcp.FcpKeyPair;
13 import net.pterodactylus.fcp.fake.FakeTcpServer;
14
15 import org.junit.Test;
16
17 /**
18  * Unit test for {@link DefaultFcpClient}.
19  *
20  * @author <a href="bombe@freenetproject.org">David ‘Bombe’ Roden</a>
21  */
22 public class DefaultFcpClientTest {
23
24         private final ExecutorService threadPool = Executors.newCachedThreadPool();
25         private final FakeTcpServer fcpServer;
26         private final DefaultFcpClient fcpClient;
27
28         public DefaultFcpClientTest() throws IOException {
29                 fcpServer = new FakeTcpServer(threadPool);
30                 fcpClient = new DefaultFcpClient(threadPool, "localhost", fcpServer.getPort(), () -> "Test", () -> "2.0");
31         }
32
33         @Test
34         public void defaultFcpClientCanGenerateKeypair() throws ExecutionException, InterruptedException, IOException {
35                 Future<FcpKeyPair> keyPairFuture = fcpClient.generateKeypair().execute();
36                 connectNode();
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"
42                                 + "EndMessage");
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/"));
48         }
49
50         private void connectNode() throws InterruptedException, ExecutionException, IOException {
51                 fcpServer.connect().get();
52                 fcpServer.collectUntil(is("EndMessage"));
53                 fcpServer.writeLine("NodeHello\n"
54                                 + "FCPVersion=2.0\n"
55                                 + "ConnectionIdentifier=754595fc35701d76096d8279d15c57e6\n"
56                                 + "Version=Fred,0.7,1.0,1231\n"
57                                 + "Node=Fred\n"
58                                 + "NodeLanguage=ENGLISH\n"
59                                 + "ExtRevision=23771\n"
60                                 + "Build=1231\n"
61                                 + "Testnet=false\n"
62                                 + "ExtBuild=26\n"
63                                 + "CompressionCodecs=3 - GZIP(0), BZIP2(1), LZMA(2)\n"
64                                 + "Revision=@custom@\n"
65                                 + "EndMessage");
66         }
67
68 }