mirror of
https://codeberg.org/PGPainless/sop-java.git
synced 2024-11-26 09:02:06 +01:00
Add InlineDetachCmdTest
This commit is contained in:
parent
084923c828
commit
77c76c57d0
2 changed files with 81 additions and 2 deletions
|
@ -12,10 +12,15 @@ import java.nio.file.Files;
|
||||||
|
|
||||||
public class TestFileUtil {
|
public class TestFileUtil {
|
||||||
|
|
||||||
public static File writeTempStringFile(String string) throws IOException {
|
public static File createTempDir() throws IOException {
|
||||||
File tempDir = Files.createTempDirectory("tmpDir").toFile();
|
File tempDir = Files.createTempDirectory("tmpFir").toFile();
|
||||||
tempDir.deleteOnExit();
|
tempDir.deleteOnExit();
|
||||||
tempDir.mkdirs();
|
tempDir.mkdirs();
|
||||||
|
return tempDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static File writeTempStringFile(String string) throws IOException {
|
||||||
|
File tempDir = createTempDir();
|
||||||
|
|
||||||
File passwordFile = new File(tempDir, "file");
|
File passwordFile = new File(tempDir, "file");
|
||||||
passwordFile.createNewFile();
|
passwordFile.createNewFile();
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
// SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
package sop.cli.picocli.commands;
|
||||||
|
|
||||||
|
import com.ginsberg.junit.exit.ExpectSystemExitWithStatus;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import sop.ReadyWithResult;
|
||||||
|
import sop.SOP;
|
||||||
|
import sop.Signatures;
|
||||||
|
import sop.cli.picocli.SopCLI;
|
||||||
|
import sop.cli.picocli.TestFileUtil;
|
||||||
|
import sop.exception.SOPGPException;
|
||||||
|
import sop.operation.InlineDetach;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
public class InlineDetachCmdTest {
|
||||||
|
|
||||||
|
InlineDetach inlineDetach;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void mockComponents() {
|
||||||
|
inlineDetach = mock(InlineDetach.class);
|
||||||
|
|
||||||
|
SOP sop = mock(SOP.class);
|
||||||
|
when(sop.inlineDetach()).thenReturn(inlineDetach);
|
||||||
|
SopCLI.setSopInstance(sop);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@ExpectSystemExitWithStatus(SOPGPException.MissingArg.EXIT_CODE)
|
||||||
|
public void testMissingSignaturesOutResultsInExit19() {
|
||||||
|
SopCLI.main(new String[] {"inline-detach"});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoArmorIsCalled() throws IOException {
|
||||||
|
// Create temp dir and allocate non-existing tempfile for sigout
|
||||||
|
File tempDir = TestFileUtil.createTempDir();
|
||||||
|
File tempFile = new File(tempDir, "sigs.out");
|
||||||
|
tempFile.deleteOnExit();
|
||||||
|
|
||||||
|
// mock inline-detach
|
||||||
|
when(inlineDetach.message((InputStream) any()))
|
||||||
|
.thenReturn(new ReadyWithResult<Signatures>() {
|
||||||
|
@Override
|
||||||
|
public Signatures writeTo(OutputStream outputStream) throws SOPGPException.NoSignature {
|
||||||
|
return new Signatures() {
|
||||||
|
@Override
|
||||||
|
public void writeTo(OutputStream signatureOutputStream) throws IOException {
|
||||||
|
signatureOutputStream.write("Signatures!\n".getBytes(StandardCharsets.UTF_8));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
SopCLI.main(new String[] {"inline-detach", "--signatures-out", tempFile.getAbsolutePath(), "--no-armor"});
|
||||||
|
verify(inlineDetach, times(1)).noArmor();
|
||||||
|
verify(inlineDetach, times(1)).message((InputStream) any());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue