Use powermock for testing servlet 3.0 functionality instead of distinct classpaths
This commit is contained in:
parent
18230259b8
commit
2fba10ab61
|
@ -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,
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue