From f463d4c1a550c4b3dfc0be362f0b0a723a88122d Mon Sep 17 00:00:00 2001 From: StevenWdV Date: Mon, 29 Nov 2021 00:12:42 +0100 Subject: Improve Java wrapper: add all tests, link correct libraries, use Maven, add Makefile & GitHub workflow. Fix make clean targets. --- .../test/java/nl/eduvpn/common/VerifyTests.java | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 wrappers/java/src/test/java/nl/eduvpn/common/VerifyTests.java (limited to 'wrappers/java/src/test') diff --git a/wrappers/java/src/test/java/nl/eduvpn/common/VerifyTests.java b/wrappers/java/src/test/java/nl/eduvpn/common/VerifyTests.java new file mode 100644 index 0000000..b4767a5 --- /dev/null +++ b/wrappers/java/src/test/java/nl/eduvpn/common/VerifyTests.java @@ -0,0 +1,78 @@ +package nl.eduvpn.common; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.Instant; + +import static org.junit.jupiter.api.Assertions.*; + +class VerifyTests { + private static final Path testDataDir = Paths.get("../../test_data"); + + @SuppressWarnings("OptionalGetWithoutIsPresent") + @BeforeAll + static void oneTimeSetup() throws IOException { + Discovery.insecureTestingSetExtraKey(Files.lines(testDataDir.resolve("dummy/public.key")).reduce((a, b) -> b).get()); + } + + @Test + void testValid() { + assertDoesNotThrow(() -> + Discovery.verify( + Files.readAllBytes(testDataDir.resolve("dummy/server_list.json.minisig")), + Files.readAllBytes(testDataDir.resolve("dummy/server_list.json")), + "server_list.json", + Instant.EPOCH + )); + } + + @Test + void testInvalidSignature() { + Assertions.assertEquals(2, assertThrows(VerifyException.class, () -> + Discovery.verify( + Files.readAllBytes(testDataDir.resolve("dummy/random.txt")), + Files.readAllBytes(testDataDir.resolve("dummy/server_list.json")), + "server_list.json", + Instant.EPOCH + )).code); + } + + @Test + void testWrongKey() { + assertEquals(3, assertThrows(VerifyException.class, () -> + Discovery.verify( + Files.readAllBytes(testDataDir.resolve("dummy/server_list.json.wrong_key.minisig")), + Files.readAllBytes(testDataDir.resolve("dummy/server_list.json")), + "server_list.json", + Instant.EPOCH + )).code); + } + + @Test + void testOldSignature() { + assertEquals(4, assertThrows(VerifyException.class, () -> + Discovery.verify( + Files.readAllBytes(testDataDir.resolve("dummy/server_list.json.minisig")), + Files.readAllBytes(testDataDir.resolve("dummy/server_list.json")), + "server_list.json", + Instant.MAX + )).code); + } + + @Test + void testUnknownExpectedFile() { + assertThrows(IllegalArgumentException.class, () -> + Discovery.verify( + Files.readAllBytes(testDataDir.resolve("dummy/other_list.json.minisig")), + Files.readAllBytes(testDataDir.resolve("dummy/other_list.json")), + "other_list.json", + Instant.EPOCH + )); + } +} \ No newline at end of file -- cgit v1.2.3