From 508e126f175f5ad11dea950d36efa401c93ef004 Mon Sep 17 00:00:00 2001 From: firaja Date: Tue, 18 Oct 2022 14:24:20 +0200 Subject: [PATCH] #83: added tests --- src/main/java/com/password4j/Password.java | 7 ++- src/main/java/com/password4j/Utils.java | 5 +- src/test/com/password4j/PasswordTest.java | 55 ++++++++++++++++++++++ src/test/resources/psw4j.properties | 2 +- 4 files changed, 62 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/password4j/Password.java b/src/main/java/com/password4j/Password.java index 3aa57d32..b8ba3143 100644 --- a/src/main/java/com/password4j/Password.java +++ b/src/main/java/com/password4j/Password.java @@ -34,10 +34,9 @@ public class Password { - private static final Logger LOGGER = LoggerFactory.getLogger(Password.class); - - static { - Utils.printBanner(); + static + { + Utils.printBanner(System.out); } private Password() diff --git a/src/main/java/com/password4j/Utils.java b/src/main/java/com/password4j/Utils.java index 04c9df3d..4a4f9c8a 100644 --- a/src/main/java/com/password4j/Utils.java +++ b/src/main/java/com/password4j/Utils.java @@ -18,6 +18,7 @@ package com.password4j; +import java.io.PrintStream; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; @@ -554,7 +555,7 @@ static String randomPrintable(int count) return builder.toString(); } - static void printBanner() + static void printBanner(PrintStream printStream) { if (PropertyReader.readBoolean("global.banner", true)) { @@ -583,7 +584,7 @@ static void printBanner() banner += " ⭐ If you enjoy Password4j, please star the project at https://github.com/Password4j/password4j\n"; banner += " \uD83D\uDC1B Report any issue at https://github.com/Password4j/password4j/issues\n"; - System.out.println(banner); + printStream.println(banner); } } diff --git a/src/test/com/password4j/PasswordTest.java b/src/test/com/password4j/PasswordTest.java index 98b98400..bd3b0eb2 100644 --- a/src/test/com/password4j/PasswordTest.java +++ b/src/test/com/password4j/PasswordTest.java @@ -22,7 +22,16 @@ import org.junit.Assert; import org.junit.Test; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.net.URL; +import java.net.URLClassLoader; +import java.security.Provider; import java.security.SecureRandom; +import java.security.Security; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import static org.junit.Assert.assertTrue; @@ -791,4 +800,50 @@ public void real() Assert.assertTrue(verified); } + @Test + public void testBanner() + { + ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + + PropertyReader.properties.setProperty("global.banner", "false"); + + Utils.printBanner(new PrintStream(outputStreamCaptor)); + Assert.assertEquals(0, outputStreamCaptor.toString().length()); + + PropertyReader.properties.setProperty("global.banner", "true"); + + } + + @Test + public void testBanner2() + { + ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + + Provider[] oldProviders = Security.getProviders(); + for (Provider provider : oldProviders) + { + for (Provider.Service service : provider.getServices()) + { + if ("SecretKeyFactory".equals(service.getType()) && service.getAlgorithm().startsWith("PBKDF2")) + { + Security.removeProvider(provider.getName()); + } + } + } + + Utils.printBanner(new PrintStream(outputStreamCaptor)); + Assert.assertTrue(outputStreamCaptor.toString().indexOf("❌") > 0); + Assert.assertTrue(outputStreamCaptor.toString().indexOf(System.getProperty("java.vm.name")) > 0); + + for (Provider provider : oldProviders) + { + if (Security.getProvider(provider.getName()) == null) + { + Security.addProvider(provider); + } + } + + } + + } diff --git a/src/test/resources/psw4j.properties b/src/test/resources/psw4j.properties index d2b51a57..41ab316a 100644 --- a/src/test/resources/psw4j.properties +++ b/src/test/resources/psw4j.properties @@ -1,5 +1,5 @@ global.random.strong=false - +global.banner=true global.pepper=AlicePepper hash.md.algorithm=SHA-512