From 6b40830686e382e2b8fbb65d557a8b1e024e513c Mon Sep 17 00:00:00 2001 From: John Blum Date: Mon, 3 Dec 2018 17:47:31 -0800 Subject: [PATCH] Fix test failures due to upgrade of Spring Test for Apache Geode/Pivotal GemFire to 1.0.0.M6. --- ...dCloudSecurityContextIntegrationTests.java | 7 ++++- ...figuredSessionCachingIntegrationTests.java | 29 ++++++++++++++----- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/security/auth/cloud/AutoConfiguredCloudSecurityContextIntegrationTests.java b/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/security/auth/cloud/AutoConfiguredCloudSecurityContextIntegrationTests.java index 3bd908c9..3f7800fd 100644 --- a/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/security/auth/cloud/AutoConfiguredCloudSecurityContextIntegrationTests.java +++ b/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/security/auth/cloud/AutoConfiguredCloudSecurityContextIntegrationTests.java @@ -57,12 +57,12 @@ import org.springframework.test.context.junit4.SpringRunner; * @see org.springframework.test.context.junit4.SpringRunner * @since 1.0.0 */ -@DirtiesContext @RunWith(SpringRunner.class) @SpringBootTest( classes = AutoConfiguredCloudSecurityContextIntegrationTests.GemFireClientConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.NONE ) +@DirtiesContext @SuppressWarnings("unused") public class AutoConfiguredCloudSecurityContextIntegrationTests extends AbstractAutoConfiguredSecurityContextIntegrationTests { @@ -78,6 +78,7 @@ public class AutoConfiguredCloudSecurityContextIntegrationTests startGemFireServer(GemFireServerConfiguration.class, "-Dspring.profiles.active=security-cloud"); loadVcapApplicationProperties(); + unsetTestAutoConfiguredPoolServersPortSystemProperty(); GemfireBeanFactoryLocator.clear(); } @@ -90,6 +91,10 @@ public class AutoConfiguredCloudSecurityContextIntegrationTests System.setProperty(property, vcapApplicationProperties.getProperty(property))); } + public static void unsetTestAutoConfiguredPoolServersPortSystemProperty() { + System.clearProperty(GEMFIRE_POOL_SERVERS_PROPERTY); + } + @AfterClass public static void cleanUpUsedResources() { vcapApplicationProperties.stringPropertyNames().forEach(System::clearProperty); diff --git a/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/session/CustomConfiguredSessionCachingIntegrationTests.java b/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/session/CustomConfiguredSessionCachingIntegrationTests.java index 51c8f3eb..91650acc 100644 --- a/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/session/CustomConfiguredSessionCachingIntegrationTests.java +++ b/spring-geode-autoconfigure/src/test/java/org/springframework/geode/boot/autoconfigure/session/CustomConfiguredSessionCachingIntegrationTests.java @@ -19,6 +19,7 @@ package org.springframework.geode.boot.autoconfigure.session; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; +import java.util.Optional; import java.util.Properties; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -40,10 +41,12 @@ import org.springframework.data.gemfire.tests.mock.annotation.EnableGemFireMockO import org.springframework.geode.boot.autoconfigure.ContinuousQueryAutoConfiguration; import org.springframework.geode.core.util.ObjectUtils; import org.springframework.mock.env.MockPropertySource; +import org.springframework.mock.web.MockServletContext; import org.springframework.session.Session; import org.springframework.session.data.gemfire.config.annotation.web.http.GemFireHttpSessionConfiguration; import org.springframework.session.data.gemfire.config.annotation.web.http.support.SpringSessionGemFireConfigurer; import org.springframework.session.data.gemfire.serialization.SessionSerializer; +import org.springframework.web.context.ConfigurableWebApplicationContext; import org.springframework.web.context.support.GenericWebApplicationContext; /** @@ -75,12 +78,6 @@ public class CustomConfiguredSessionCachingIntegrationTests extends SpringBootAp private static final String SPRING_SESSION_DATA_GEMFIRE_PROPERTY = "spring.session.data.gemfire"; - private volatile Function applicationContextFunction = - Function.identity(); - - private volatile Function springApplicationBuilderFunction = - Function.identity(); - private static Properties singletonProperties(String propertyName, String propertyValue) { Properties properties = new Properties(); @@ -90,6 +87,23 @@ public class CustomConfiguredSessionCachingIntegrationTests extends SpringBootAp return properties; } + private volatile Function applicationContextFunction = + Function.identity(); + + private volatile Function mockServletContextFunction = + applicationContext -> { + + Optional.ofNullable(applicationContext) + .filter(ConfigurableWebApplicationContext.class::isInstance) + .map(ConfigurableWebApplicationContext.class::cast) + .ifPresent(it -> it.setServletContext(new MockServletContext())); + + return applicationContext; + }; + + private volatile Function springApplicationBuilderFunction = + Function.identity(); + private Function newSpringBootSessionPropertiesConfigurationFunction() { return springApplicationBuilder -> @@ -123,13 +137,14 @@ public class CustomConfiguredSessionCachingIntegrationTests extends SpringBootAp @Override protected SpringApplicationBuilder processBeforeBuild(SpringApplicationBuilder springApplicationBuilder) { + return this.springApplicationBuilderFunction.apply(springApplicationBuilder) .contextClass(GenericWebApplicationContext.class); } @Override protected ConfigurableApplicationContext processBeforeRefresh(ConfigurableApplicationContext applicationContext) { - return this.applicationContextFunction.apply(applicationContext); + return this.mockServletContextFunction.andThen(this.applicationContextFunction).apply(applicationContext); } private String springSessionPropertyName(String propertyNameSuffix) {