diff --git a/gradle/javaprojects.gradle b/gradle/javaprojects.gradle index 4822c65f1a..6462f4bdf9 100644 --- a/gradle/javaprojects.gradle +++ b/gradle/javaprojects.gradle @@ -12,7 +12,7 @@ hsqlVersion = '1.8.0.10' slf4jVersion = '1.6.1' logbackVersion = '0.9.29' cglibVersion = '2.2' -powerMockVersion = '1.4.10' +powerMockVersion = '1.4.12' bundlorProperties = [ version: version, diff --git a/web/src/test/java/org/springframework/security/web/authentication/rememberme/AbstractRememberMeServicesServlet3Tests.java b/web/src/test/java/org/springframework/security/web/authentication/rememberme/AbstractRememberMeServicesServlet3Tests.java index 7453357163..c2e626f0f2 100644 --- a/web/src/test/java/org/springframework/security/web/authentication/rememberme/AbstractRememberMeServicesServlet3Tests.java +++ b/web/src/test/java/org/springframework/security/web/authentication/rememberme/AbstractRememberMeServicesServlet3Tests.java @@ -1,26 +1,46 @@ package org.springframework.security.web.authentication.rememberme; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; +import static org.mockito.Matchers.eq; +import static org.mockito.Matchers.same; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import static org.powermock.api.mockito.PowerMockito.mock; +import static org.powermock.api.mockito.PowerMockito.spy; +import static org.powermock.api.mockito.PowerMockito.verifyStatic; +import static org.powermock.api.mockito.PowerMockito.when; + +import java.lang.reflect.Method; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.web.authentication.rememberme.AbstractRememberMeServicesTests.MockRememberMeServices; import org.springframework.util.ReflectionUtils; /** - * Note: This test will fail in the IDE since it needs to be ran with servlet 3.0 and servlet 2.5 is also on the classpath. * * @author Rob Winch */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({Method.class, ReflectionUtils.class}) public class AbstractRememberMeServicesServlet3Tests { + @Mock + private Method method; + + @Before + public void setUp() throws Exception { + spy(ReflectionUtils.class); + + when(ReflectionUtils.findMethod(Cookie.class, "setHttpOnly", boolean.class)).thenReturn(method); + } @Test public void httpOnlySetInServlet30DefaultConstructor() throws Exception { @@ -31,8 +51,8 @@ public class AbstractRememberMeServicesServlet3Tests { MockRememberMeServices services = new MockRememberMeServices(); services.setCookie(new String[] {"mycookie"}, 1000, request, response); verify(response).addCookie(cookie.capture()); - Cookie rememberme = cookie.getValue(); - assertTrue((Boolean)ReflectionUtils.invokeMethod(rememberme.getClass().getMethod("isHttpOnly"),rememberme)); + verifyStatic(); + ReflectionUtils.invokeMethod(same(method), eq(cookie.getValue()), eq(true)); } @Test @@ -44,7 +64,7 @@ public class AbstractRememberMeServicesServlet3Tests { MockRememberMeServices services = new MockRememberMeServices("key",mock(UserDetailsService.class)); services.setCookie(new String[] {"mycookie"}, 1000, request, response); verify(response).addCookie(cookie.capture()); - Cookie rememberme = cookie.getValue(); - assertTrue((Boolean)ReflectionUtils.invokeMethod(rememberme.getClass().getMethod("isHttpOnly"),rememberme)); + verifyStatic(); + ReflectionUtils.invokeMethod(same(method), eq(cookie.getValue()), eq(true)); } } diff --git a/web/web.gradle b/web/web.gradle index 5a1b01af3a..5a990c0ee4 100644 --- a/web/web.gradle +++ b/web/web.gradle @@ -1,9 +1,3 @@ -// Web module build file -configurations { - servlet3Test - servlet3Test.exclude group: 'javax.servlet', name: 'sevlet-api' -} - dependencies { compile project(':spring-security-core'), 'aopalliance:aopalliance:1.0', @@ -17,30 +11,15 @@ dependencies { provided 'javax.servlet:servlet-api:2.5' - servlet3Test 'org.jboss.spec.javax.servlet:jboss-servlet-api_3.0_spec:1.0.0.Final' - testCompile project(':spring-security-core').sourceSets.test.classes, 'commons-codec:commons-codec:1.3', - "org.springframework:spring-test:$springVersion" + "org.springframework:spring-test:$springVersion", + "org.powermock:powermock-core:$powerMockVersion", + "org.powermock:powermock-api-support:$powerMockVersion", + "org.powermock:powermock-module-junit4-common:$powerMockVersion", + "org.powermock:powermock-module-junit4:$powerMockVersion", + "org.powermock:powermock-api-mockito:$powerMockVersion", + "org.powermock:powermock-reflect:$powerMockVersion" + testRuntime "hsqldb:hsqldb:$hsqlVersion" -} - -configurations.testRuntime.allDependencies.each { - if( !(it.group == 'javax.servlet' && it.name == 'servlet-api') ) { - configurations.servlet3Test.addDependency it - } -} - -test { - exclude '**/*Servlet3Tests.class' -} - -task servlet3Test(type: Test, dependsOn: testClasses) { - testClassesDir = sourceSets.test.classesDir - logging.captureStandardOutput(LogLevel.INFO) - classpath = sourceSets.main.classes + sourceSets.test.classes + configurations.servlet3Test - maxParallelForks = 1 - testReport = false - include '**/*Servlet3Tests.class' -} -check.dependsOn servlet3Test \ No newline at end of file +} \ No newline at end of file