From 5a65da400db47fc6dce386600411fa4c3e4b16a0 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Thu, 30 Mar 2017 16:44:09 -0500 Subject: [PATCH] Use ReflectionTestUtils rather than Whitebox This is better because it no longer uses Mockito's internal API Fixes gh-4305 --- .../config/SecurityNamespaceHandlerTests.java | 4 ++-- .../http/DefaultFilterChainValidatorTests.java | 5 +++-- .../security/web/debug/DebugFilter.java | 2 +- .../security/web/debug/DebugFilterTest.java | 7 +++---- ...ityContextHolderAwareRequestFilterTests.java | 17 +++++++---------- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java b/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java index faea968193..3c1d4aec96 100644 --- a/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java +++ b/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java @@ -26,10 +26,10 @@ import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.reflect.internal.WhiteboxImpl; import org.springframework.beans.factory.parsing.BeanDefinitionParsingException; import org.springframework.messaging.Message; import org.springframework.security.config.util.InMemoryXmlApplicationContext; +import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.ClassUtils; /** @@ -87,7 +87,7 @@ public class SecurityNamespaceHandlerTests { Log logger = mock(Log.class); SecurityNamespaceHandler handler = new SecurityNamespaceHandler(); - WhiteboxImpl.setInternalState(handler, Log.class, logger); + ReflectionTestUtils.setField(handler, "logger", logger); handler.init(); diff --git a/config/src/test/java/org/springframework/security/config/http/DefaultFilterChainValidatorTests.java b/config/src/test/java/org/springframework/security/config/http/DefaultFilterChainValidatorTests.java index 5a487ab6ce..c4cba0f38f 100644 --- a/config/src/test/java/org/springframework/security/config/http/DefaultFilterChainValidatorTests.java +++ b/config/src/test/java/org/springframework/security/config/http/DefaultFilterChainValidatorTests.java @@ -28,8 +28,8 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.internal.util.reflection.Whitebox; import org.mockito.runners.MockitoJUnitRunner; +import org.springframework.test.util.ReflectionTestUtils; import org.springframework.security.access.AccessDecisionManager; import org.springframework.security.core.Authentication; import org.springframework.security.web.AuthenticationEntryPoint; @@ -74,7 +74,8 @@ public class DefaultFilterChainValidatorTests { AnyRequestMatcher.INSTANCE, aaf, etf, fsi); fcp = new FilterChainProxy(securityChain); validator = new DefaultFilterChainValidator(); - Whitebox.setInternalState(validator, "logger", logger); + + ReflectionTestUtils.setField(validator, "logger", logger); } // SEC-1878 diff --git a/web/src/main/java/org/springframework/security/web/debug/DebugFilter.java b/web/src/main/java/org/springframework/security/web/debug/DebugFilter.java index e063875aa4..1ee321c337 100644 --- a/web/src/main/java/org/springframework/security/web/debug/DebugFilter.java +++ b/web/src/main/java/org/springframework/security/web/debug/DebugFilter.java @@ -45,7 +45,7 @@ import java.util.*; * @since 3.1 */ public final class DebugFilter implements Filter { - private static final String ALREADY_FILTERED_ATTR_NAME = DebugFilter.class.getName() + static final String ALREADY_FILTERED_ATTR_NAME = DebugFilter.class.getName() .concat(".FILTERED"); private final FilterChainProxy fcp; diff --git a/web/src/test/java/org/springframework/security/web/debug/DebugFilterTest.java b/web/src/test/java/org/springframework/security/web/debug/DebugFilterTest.java index 04a166e4e8..875415080d 100644 --- a/web/src/test/java/org/springframework/security/web/debug/DebugFilterTest.java +++ b/web/src/test/java/org/springframework/security/web/debug/DebugFilterTest.java @@ -37,9 +37,9 @@ import org.mockito.Captor; import org.mockito.Mock; import org.powermock.core.classloader.annotations.PrepareOnlyThisForTest; import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.reflect.internal.WhiteboxImpl; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.security.web.FilterChainProxy; +import org.springframework.test.util.ReflectionTestUtils; /** * @@ -75,9 +75,8 @@ public class DebugFilterTest { Collections.enumeration(Collections. emptyList())); when(request.getServletPath()).thenReturn("/login"); filter = new DebugFilter(fcp); - WhiteboxImpl.setInternalState(filter, Logger.class, logger); - requestAttr = WhiteboxImpl.getInternalState(filter, "ALREADY_FILTERED_ATTR_NAME", - filter.getClass()); + ReflectionTestUtils.setField(filter, "logger", logger); + requestAttr = DebugFilter.ALREADY_FILTERED_ATTR_NAME; } @Test diff --git a/web/src/test/java/org/springframework/security/web/servletapi/SecurityContextHolderAwareRequestFilterTests.java b/web/src/test/java/org/springframework/security/web/servletapi/SecurityContextHolderAwareRequestFilterTests.java index 59611c2c35..953bd27307 100644 --- a/web/src/test/java/org/springframework/security/web/servletapi/SecurityContextHolderAwareRequestFilterTests.java +++ b/web/src/test/java/org/springframework/security/web/servletapi/SecurityContextHolderAwareRequestFilterTests.java @@ -34,7 +34,6 @@ import org.mockito.Captor; import org.mockito.Mock; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import org.powermock.reflect.internal.WhiteboxImpl; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; @@ -48,6 +47,7 @@ import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.logout.LogoutHandler; +import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.ClassUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -331,10 +331,9 @@ public class SecurityContextHolderAwareRequestFilterTests { DelegatingSecurityContextRunnable wrappedRunnable = (DelegatingSecurityContextRunnable) runnableCaptor .getValue(); assertThat( - WhiteboxImpl.getInternalState(wrappedRunnable, "delegateSecurityContext")) + ReflectionTestUtils.getField(wrappedRunnable, "delegateSecurityContext")) .isEqualTo(context); - assertThat(WhiteboxImpl.getInternalState(wrappedRunnable, "delegate")) - .isEqualTo(runnable); + assertThat(ReflectionTestUtils.getField(wrappedRunnable, "delegate")); } @Test @@ -361,10 +360,9 @@ public class SecurityContextHolderAwareRequestFilterTests { DelegatingSecurityContextRunnable wrappedRunnable = (DelegatingSecurityContextRunnable) runnableCaptor .getValue(); assertThat( - WhiteboxImpl.getInternalState(wrappedRunnable, "delegateSecurityContext")) + ReflectionTestUtils.getField(wrappedRunnable, "delegateSecurityContext")) .isEqualTo(context); - assertThat(WhiteboxImpl.getInternalState(wrappedRunnable, "delegate")) - .isEqualTo(runnable); + assertThat(ReflectionTestUtils.getField(wrappedRunnable, "delegate")); } @Test @@ -392,10 +390,9 @@ public class SecurityContextHolderAwareRequestFilterTests { DelegatingSecurityContextRunnable wrappedRunnable = (DelegatingSecurityContextRunnable) runnableCaptor .getValue(); assertThat( - WhiteboxImpl.getInternalState(wrappedRunnable, "delegateSecurityContext")) + ReflectionTestUtils.getField(wrappedRunnable, "delegateSecurityContext")) .isEqualTo(context); - assertThat(WhiteboxImpl.getInternalState(wrappedRunnable, "delegate")) - .isEqualTo(runnable); + assertThat(ReflectionTestUtils.getField(wrappedRunnable, "delegate")); } // SEC-3047