From 7bff8312b46210a9a1d7bafc6f23a6d27518b0c3 Mon Sep 17 00:00:00 2001 From: Minecon724 Date: Mon, 5 May 2025 10:01:47 +0200 Subject: [PATCH] Refactor tests --- .../eu/m724/jarupdater/object/Version.java | 16 ++++- .../verify/SignatureVerifierImpl.java | 4 +- .../jarupdater/download}/DownloaderTest.java | 3 +- .../jarupdater/download}/MockDownloader.java | 4 +- .../environment}/EnvironmentTest.java | 7 +-- .../m724/jarupdater/live}/MetadataTest.java | 4 +- .../jarupdater/live}/MockMetadataDAO.java | 9 ++- .../m724/jarupdater/updater/UpdaterTest.java | 63 +++++++++++++++++++ .../m724/jarupdater/verify/MockVerifier.java | 8 +++ 9 files changed, 96 insertions(+), 22 deletions(-) rename src/test/java/{jarupdater => eu/m724/jarupdater/download}/DownloaderTest.java (95%) rename src/test/java/{jarupdater => eu/m724/jarupdater/download}/MockDownloader.java (94%) rename src/test/java/{jarupdater => eu/m724/jarupdater/environment}/EnvironmentTest.java (76%) rename src/test/java/{jarupdater => eu/m724/jarupdater/live}/MetadataTest.java (91%) rename src/test/java/{jarupdater => eu/m724/jarupdater/live}/MockMetadataDAO.java (69%) create mode 100644 src/test/java/eu/m724/jarupdater/updater/UpdaterTest.java create mode 100644 src/test/java/eu/m724/jarupdater/verify/MockVerifier.java diff --git a/src/main/java/eu/m724/jarupdater/object/Version.java b/src/main/java/eu/m724/jarupdater/object/Version.java index 953064a..c03144a 100644 --- a/src/main/java/eu/m724/jarupdater/object/Version.java +++ b/src/main/java/eu/m724/jarupdater/object/Version.java @@ -2,6 +2,8 @@ package eu.m724.jarupdater.object; import com.google.gson.annotations.SerializedName; +import java.util.Objects; + public class Version { /** * metadata file version @@ -67,6 +69,16 @@ public class Version { public String getSha256() { return sha256; } - - + + @Override + public boolean equals(Object o) { + if (!(o instanceof Version)) return false; + Version version = (Version) o; + return id == version.id && timestamp == version.timestamp && Objects.equals(label, version.label) && Objects.equals(fileUrl, version.fileUrl) && Objects.equals(changelogUrl, version.changelogUrl) && Objects.equals(sha256, version.sha256); + } + + @Override + public int hashCode() { + return Objects.hash(id, timestamp, label, fileUrl, changelogUrl, sha256); + } } diff --git a/src/main/java/eu/m724/jarupdater/verify/SignatureVerifierImpl.java b/src/main/java/eu/m724/jarupdater/verify/SignatureVerifierImpl.java index 9f1c80d..c947f76 100644 --- a/src/main/java/eu/m724/jarupdater/verify/SignatureVerifierImpl.java +++ b/src/main/java/eu/m724/jarupdater/verify/SignatureVerifierImpl.java @@ -25,7 +25,7 @@ public class SignatureVerifierImpl { * @return {@link RSAPublicKey} instance of the public key * @throws IOException if reading the key input stream failed */ - static RSAPublicKey loadPublicKey(InputStream keyInputStream) throws IOException { + public static RSAPublicKey loadPublicKey(InputStream keyInputStream) throws IOException { // Read the key file String keyContent = new String(keyInputStream.readAllBytes()); @@ -57,7 +57,7 @@ public class SignatureVerifierImpl { * @param publicKeys the {@link RSAPublicKey}s * @throws VerificationException if verification failed */ - static void verifyWithRsaKey(String jarPath, RSAPublicKey... publicKeys) throws VerificationException { + public static void verifyWithRsaKey(String jarPath, RSAPublicKey... publicKeys) throws VerificationException { try { // Open the JAR file try (JarFile jarFile = new JarFile(jarPath, true)) { diff --git a/src/test/java/jarupdater/DownloaderTest.java b/src/test/java/eu/m724/jarupdater/download/DownloaderTest.java similarity index 95% rename from src/test/java/jarupdater/DownloaderTest.java rename to src/test/java/eu/m724/jarupdater/download/DownloaderTest.java index 8f42528..63002b8 100644 --- a/src/test/java/jarupdater/DownloaderTest.java +++ b/src/test/java/eu/m724/jarupdater/download/DownloaderTest.java @@ -1,6 +1,5 @@ -package jarupdater; +package eu.m724.jarupdater.download; -import eu.m724.jarupdater.download.Downloader; import org.junit.Test; import java.io.IOException; diff --git a/src/test/java/jarupdater/MockDownloader.java b/src/test/java/eu/m724/jarupdater/download/MockDownloader.java similarity index 94% rename from src/test/java/jarupdater/MockDownloader.java rename to src/test/java/eu/m724/jarupdater/download/MockDownloader.java index a316f3c..b3c5272 100644 --- a/src/test/java/jarupdater/MockDownloader.java +++ b/src/test/java/eu/m724/jarupdater/download/MockDownloader.java @@ -1,6 +1,4 @@ -package jarupdater; - -import eu.m724.jarupdater.download.Downloader; +package eu.m724.jarupdater.download; import java.io.IOException; import java.nio.file.Path; diff --git a/src/test/java/jarupdater/EnvironmentTest.java b/src/test/java/eu/m724/jarupdater/environment/EnvironmentTest.java similarity index 76% rename from src/test/java/jarupdater/EnvironmentTest.java rename to src/test/java/eu/m724/jarupdater/environment/EnvironmentTest.java index 9e0c9f9..a2b1f8d 100644 --- a/src/test/java/jarupdater/EnvironmentTest.java +++ b/src/test/java/eu/m724/jarupdater/environment/EnvironmentTest.java @@ -1,11 +1,8 @@ -package jarupdater; - -import java.nio.file.Path; +package eu.m724.jarupdater.environment; import org.junit.Test; -import eu.m724.jarupdater.environment.ConstantEnvironment; -import eu.m724.jarupdater.environment.Environment; +import java.nio.file.Path; public class EnvironmentTest { @Test diff --git a/src/test/java/jarupdater/MetadataTest.java b/src/test/java/eu/m724/jarupdater/live/MetadataTest.java similarity index 91% rename from src/test/java/jarupdater/MetadataTest.java rename to src/test/java/eu/m724/jarupdater/live/MetadataTest.java index 897e568..d556f58 100644 --- a/src/test/java/jarupdater/MetadataTest.java +++ b/src/test/java/eu/m724/jarupdater/live/MetadataTest.java @@ -1,9 +1,7 @@ -package jarupdater; +package eu.m724.jarupdater.live; import eu.m724.jarupdater.environment.ConstantEnvironment; import eu.m724.jarupdater.environment.Environment; -import eu.m724.jarupdater.live.MetadataDAO; -import eu.m724.jarupdater.live.MetadataFacade; import eu.m724.jarupdater.object.Version; import org.junit.Test; diff --git a/src/test/java/jarupdater/MockMetadataDAO.java b/src/test/java/eu/m724/jarupdater/live/MockMetadataDAO.java similarity index 69% rename from src/test/java/jarupdater/MockMetadataDAO.java rename to src/test/java/eu/m724/jarupdater/live/MockMetadataDAO.java index 2003cd1..2ee0f1f 100644 --- a/src/test/java/jarupdater/MockMetadataDAO.java +++ b/src/test/java/eu/m724/jarupdater/live/MockMetadataDAO.java @@ -1,6 +1,5 @@ -package jarupdater; +package eu.m724.jarupdater.live; -import eu.m724.jarupdater.live.MetadataDAO; import eu.m724.jarupdater.object.NoSuchVersionException; import eu.m724.jarupdater.object.Version; @@ -20,15 +19,15 @@ public class MockMetadataDAO implements MetadataDAO { @Override public CompletableFuture getMetadata(String channel, String versionLabel) { Version version = null; - String fileUrl = "http://127.0.0.1:17357/" + channel + "/" + versionLabel + ".jar"; + String fileUrlPrefix = "http://127.0.0.1:17357/" + channel + "/"; switch (versionLabel) { case "1.0": - version = new Version(1, 100, "1.0", fileUrl, null, "dd3822ed965b2820aa0800f04b86f26d0b656fca3b97ddd264046076f81e3a24"); + version = new Version(1, 100, "1.0", fileUrlPrefix + "1.0.jar", null, "dd3822ed965b2820aa0800f04b86f26d0b656fca3b97ddd264046076f81e3a24"); break; case "1.1": case "latest": - version = new Version(2, 200, "1.1", fileUrl, null,"4d59994f607b89987d5bff430a4229edbbb045b3da9eaf1c63fa8e5fb208d824"); + version = new Version(2, 200, "1.1", fileUrlPrefix + "1.1.jar", null,"4d59994f607b89987d5bff430a4229edbbb045b3da9eaf1c63fa8e5fb208d824"); break; default: return CompletableFuture.failedFuture(new CompletionException(new NoSuchVersionException(channel, versionLabel))); diff --git a/src/test/java/eu/m724/jarupdater/updater/UpdaterTest.java b/src/test/java/eu/m724/jarupdater/updater/UpdaterTest.java new file mode 100644 index 0000000..7378266 --- /dev/null +++ b/src/test/java/eu/m724/jarupdater/updater/UpdaterTest.java @@ -0,0 +1,63 @@ +package eu.m724.jarupdater.updater; + +import eu.m724.jarupdater.download.Downloader; +import eu.m724.jarupdater.download.MockDownloader; +import eu.m724.jarupdater.environment.ConstantEnvironment; +import eu.m724.jarupdater.environment.Environment; +import eu.m724.jarupdater.live.MetadataDAO; +import eu.m724.jarupdater.live.MetadataFacade; +import eu.m724.jarupdater.live.MockMetadataDAO; +import eu.m724.jarupdater.object.Version; +import eu.m724.jarupdater.verify.MockVerifier; +import eu.m724.jarupdater.verify.Verifier; +import org.junit.Before; +import org.junit.Test; + +import java.nio.file.Path; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class UpdaterTest { + Updater updater; + + private final Version expectedCurrentVersion = new Version(1, 100, "1.0", "http://127.0.0.1:17357/stable/1.0.jar", null, "dd3822ed965b2820aa0800f04b86f26d0b656fca3b97ddd264046076f81e3a24"); + private final Version expectedLatestVersion = new Version(2, 200, "1.1", "http://127.0.0.1:17357/stable/1.1.jar", null,"4d59994f607b89987d5bff430a4229edbbb045b3da9eaf1c63fa8e5fb208d824"); + + @Before + public void createUpdater() { + Environment environment = new ConstantEnvironment("1.0", "stable", Path.of("idontexist")); + + MetadataDAO metadataDAO = new MockMetadataDAO(); + MetadataFacade metadataFacade = new MetadataFacade(environment, metadataDAO); + + Downloader downloader = new MockDownloader(); + + Verifier verifier = new MockVerifier(); + + this.updater = new Updater(environment, metadataFacade, downloader, verifier); + } + + @Test + public void testChannels() { + List channels = updater.getChannels().join(); + assertEquals(channels, Arrays.asList("stable", "beta", "alpha")); + } + + @Test + public void testCurrentVersion() { + Version currentVersion = updater.getCurrentVersion().join(); + + assertEquals(expectedCurrentVersion, currentVersion); + } + + @Test + public void testLatestVersion() { + Version latestVersion = updater.getLatestVersion().join(); + + assertEquals(expectedLatestVersion, latestVersion); + } + + +} diff --git a/src/test/java/eu/m724/jarupdater/verify/MockVerifier.java b/src/test/java/eu/m724/jarupdater/verify/MockVerifier.java new file mode 100644 index 0000000..48bb0ff --- /dev/null +++ b/src/test/java/eu/m724/jarupdater/verify/MockVerifier.java @@ -0,0 +1,8 @@ +package eu.m724.jarupdater.verify; + +public class MockVerifier implements Verifier { + @Override + public void verify(String jarPath) throws VerificationException { + return; + } +}