Close FCP server after each test
[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.After;
16 import org.junit.Test;
17
18 /**
19  * Unit test for {@link DefaultFcpClient}.
20  *
21  * @author <a href="bombe@freenetproject.org">David ‘Bombe’ Roden</a>
22  */
23 public class DefaultFcpClientTest {
24
25         private final ExecutorService threadPool = Executors.newCachedThreadPool();
26         private final FakeTcpServer fcpServer;
27         private final DefaultFcpClient fcpClient;
28
29         public DefaultFcpClientTest() throws IOException {
30                 fcpServer = new FakeTcpServer(threadPool);
31                 fcpClient = new DefaultFcpClient(threadPool, "localhost", fcpServer.getPort(), () -> "Test", () -> "2.0");
32         }
33
34         @After
35         public void tearDown() throws IOException {
36                 fcpServer.close();
37         }
38
39         @Test
40         public void defaultFcpClientCanGenerateKeypair() throws ExecutionException, InterruptedException, IOException {
41                 Future<FcpKeyPair> keyPairFuture = fcpClient.generateKeypair().execute();
42                 connectNode();
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"
48                                 + "EndMessage");
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/"));
54         }
55
56         private void connectNode() throws InterruptedException, ExecutionException, IOException {
57                 fcpServer.connect().get();
58                 fcpServer.collectUntil(is("EndMessage"));
59                 fcpServer.writeLine("NodeHello\n"
60                                 + "FCPVersion=2.0\n"
61                                 + "ConnectionIdentifier=754595fc35701d76096d8279d15c57e6\n"
62                                 + "Version=Fred,0.7,1.0,1231\n"
63                                 + "Node=Fred\n"
64                                 + "NodeLanguage=ENGLISH\n"
65                                 + "ExtRevision=23771\n"
66                                 + "Build=1231\n"
67                                 + "Testnet=false\n"
68                                 + "ExtBuild=26\n"
69                                 + "CompressionCodecs=3 - GZIP(0), BZIP2(1), LZMA(2)\n"
70                                 + "Revision=@custom@\n"
71                                 + "EndMessage");
72         }
73
74 }