From 226dc75ddc9b29a4dae84aea2c1cd9b8699fb053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 6 Dec 2018 08:56:57 +0100 Subject: [PATCH] Fix unit test --- .../java/sonia/scm/security/SecureKeyResolver.java | 10 ++++++++-- .../sonia/scm/security/SecureKeyResolverTest.java | 13 ++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java b/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java index f3dbffcf5b..f1f29bfe51 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java +++ b/scm-webapp/src/main/java/sonia/scm/security/SecureKeyResolver.java @@ -51,6 +51,7 @@ import static com.google.common.base.Preconditions.*; //~--- JDK imports ------------------------------------------------------------ import java.security.SecureRandom; +import java.util.Random; import javax.inject.Inject; import javax.inject.Singleton; @@ -88,12 +89,17 @@ public class SecureKeyResolver extends SigningKeyResolverAdapter */ @Inject @SuppressWarnings("unchecked") - public SecureKeyResolver(ConfigurationEntryStoreFactory storeFactory) + public SecureKeyResolver(ConfigurationEntryStoreFactory storeFactory) { + this(storeFactory, new SecureRandom()); + } + + SecureKeyResolver(ConfigurationEntryStoreFactory storeFactory, Random random) { store = storeFactory .withType(SecureKey.class) .withName(STORE_NAME) .build(); + this.random = random; } //~--- methods -------------------------------------------------------------- @@ -163,7 +169,7 @@ public class SecureKeyResolver extends SigningKeyResolverAdapter //~--- fields --------------------------------------------------------------- /** secure randon */ - private final SecureRandom random = new SecureRandom(); + private final Random random; /** configuration entry store */ private final ConfigurationEntryStore store; diff --git a/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java b/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java index c4f281537e..cce3fea2b1 100644 --- a/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java +++ b/scm-webapp/src/test/java/sonia/scm/security/SecureKeyResolverTest.java @@ -44,12 +44,16 @@ import org.mockito.junit.MockitoJUnitRunner; import sonia.scm.store.ConfigurationEntryStore; import sonia.scm.store.ConfigurationEntryStoreFactory; +import java.util.Random; + import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.in; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.argThat; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -99,10 +103,11 @@ public class SecureKeyResolverTest * Method description * */ - @Test(expected = IllegalStateException.class) + @Test public void testResolveSigningKeyBytesWithoutKey() { - resolver.resolveSigningKeyBytes(null, Jwts.claims().setSubject("test")); + byte[] bytes = resolver.resolveSigningKeyBytes(null, Jwts.claims().setSubject("test")); + assertThat(bytes[0]).isEqualTo((byte) 42); } /** @@ -132,7 +137,9 @@ public class SecureKeyResolverTest assertThat(storeParameters.getType()).isEqualTo(SecureKey.class); return true; }))).thenReturn(store); - resolver = new SecureKeyResolver(factory); + Random random = mock(Random.class); + doAnswer(invocation -> ((byte[]) invocation.getArguments()[0])[0] = 42).when(random).nextBytes(any()); + resolver = new SecureKeyResolver(factory, random); } //~--- fields ---------------------------------------------------------------