diff --git a/pgpainless-cli/src/test/java/org/pgpainless/cli/commands/RoundTripEncryptDecryptCmdTest.java b/pgpainless-cli/src/test/java/org/pgpainless/cli/commands/RoundTripEncryptDecryptCmdTest.java index 8c294e59..3caa81ae 100644 --- a/pgpainless-cli/src/test/java/org/pgpainless/cli/commands/RoundTripEncryptDecryptCmdTest.java +++ b/pgpainless-cli/src/test/java/org/pgpainless/cli/commands/RoundTripEncryptDecryptCmdTest.java @@ -644,4 +644,30 @@ public class RoundTripEncryptDecryptCmdTest extends CLITest { int exitCode = executeCommand("decrypt"); assertEquals(SOPGPException.MissingArg.EXIT_CODE, exitCode); } + + @Test + public void testEncryptDecryptWithFreshRSAKey() throws IOException { + // Generate key + File passwordFile = writeFile("password", "sw0rdf1sh"); + File keyFile = pipeStdoutToFile("key.asc"); + assertSuccess(executeCommand("generate-key", "--profile=rfc4880", "--with-key-password", passwordFile.getAbsolutePath(), "Alice ")); + + File certFile = pipeStdoutToFile("cert.asc"); + pipeFileToStdin(keyFile); + assertSuccess(executeCommand("extract-cert")); + + // Write plaintext + File plaintextFile = writeFile("msg.txt", "Hello, World!\n"); + + // Encrypt + File ciphertextFile = pipeStdoutToFile("msg.asc"); + pipeFileToStdin(plaintextFile); + assertSuccess(executeCommand("encrypt", "--profile=rfc4880", certFile.getAbsolutePath())); + + ByteArrayOutputStream decrypted = pipeStdoutToStream(); + pipeFileToStdin(ciphertextFile); + assertSuccess(executeCommand("decrypt", "--with-key-password", passwordFile.getAbsolutePath(), keyFile.getAbsolutePath())); + + assertEquals("Hello, World!\n", decrypted.toString()); + } }