From c0b50afc1d1109659f6122928d8ee155f4422ee2 Mon Sep 17 00:00:00 2001
From: Martin Vogel <martin.vogel@sinc.de>
Date: Wed, 28 Jun 2023 21:14:26 +0200
Subject: [PATCH] refactor(#664): add tests

---
 .../fitconnect/cli/keygen/KeyWriter.java      |  2 +-
 .../fitconnect/cli/CommandLineClientTest.java | 28 +++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/cli/src/main/java/dev/fitko/fitconnect/cli/keygen/KeyWriter.java b/cli/src/main/java/dev/fitko/fitconnect/cli/keygen/KeyWriter.java
index 84fca0762..687518b32 100644
--- a/cli/src/main/java/dev/fitko/fitconnect/cli/keygen/KeyWriter.java
+++ b/cli/src/main/java/dev/fitko/fitconnect/cli/keygen/KeyWriter.java
@@ -99,7 +99,7 @@ public final class KeyWriter {
             Files.write(path, content.getBytes(StandardCharsets.UTF_8));
         } catch (final IOException e) {
             LOGGER.error(e.getMessage(), e);
-            System.exit(0);
+            throw new RuntimeException(e);
         }
     }
 }
diff --git a/cli/src/test/java/dev/fitko/fitconnect/cli/CommandLineClientTest.java b/cli/src/test/java/dev/fitko/fitconnect/cli/CommandLineClientTest.java
index 07c7c57b4..71e1e09ed 100644
--- a/cli/src/test/java/dev/fitko/fitconnect/cli/CommandLineClientTest.java
+++ b/cli/src/test/java/dev/fitko/fitconnect/cli/CommandLineClientTest.java
@@ -8,6 +8,7 @@ import dev.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup;
 import dev.fitko.fitconnect.api.services.Subscriber;
 import dev.fitko.fitconnect.cli.batch.CsvImporter;
 import dev.fitko.fitconnect.cli.batch.ImportRecord;
+import dev.fitko.fitconnect.cli.keygen.KeyWriter;
 import dev.fitko.fitconnect.client.SenderClient;
 import dev.fitko.fitconnect.client.SubscriberClient;
 import dev.fitko.fitconnect.client.sender.model.Attachment;
@@ -19,6 +20,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.HashSet;
 import java.util.List;
@@ -26,6 +28,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -139,6 +142,31 @@ class CommandLineClientTest {
         logs.assertContains("DONE ! Finished batch import of " + importRecords.size() + " submissions");
     }
 
+    @Test
+    void testKeyGeneration(@TempDir final Path tempDir) {
+
+        // When
+        underTest.run("keygen", "--outDir=" + tempDir.toAbsolutePath());
+
+        // Then
+        logs.assertContains("Writing keys to directory " + tempDir.toAbsolutePath());
+
+        assertTrue(Files.exists(Path.of(tempDir.toString(), KeyWriter.PUBLIC_ENCRYPTION_KEY_NAME)));
+        assertTrue(Files.exists(Path.of(tempDir.toString(), KeyWriter.PRIVATE_DECRYPTION_KEY_NAME)));
+        assertTrue(Files.exists(Path.of(tempDir.toString(), KeyWriter.PUBLIC_SIGNATURE_VERIFICATION_KEY_NAME)));
+        assertTrue(Files.exists(Path.of(tempDir.toString(), KeyWriter.PRIVATE_SIGNING_KEY_NAME)));
+    }
+
+    @Test
+    void testKeyGenerationWithConfigOption(@TempDir final Path tempDir) {
+
+        // When
+        underTest.run("keygen", "--outDir=" + tempDir.toAbsolutePath(), "--withConfig=true");
+
+        // Then
+        assertTrue(Files.exists(Path.of(tempDir.toString(), "config.yml")));
+    }
+
     private Set<SubmissionForPickup> generateSubmissions(final UUID destinationId, final int count) {
         final Set<SubmissionForPickup> submissions = new HashSet<>(count);
         for (int i = 0; i < count; i++) {
-- 
GitLab