Skip to content

Commit b1d4cf4

Browse files
committed
Fix Neo4J Tests
Update Neo4J tests following SPR-17333 which has broken our previous method of simulating Embedded Neo4J. Closes gh-14779
1 parent 33c2d24 commit b1d4cf4

File tree

4 files changed

+20
-25
lines changed

4 files changed

+20
-25
lines changed

spring-boot-project/spring-boot-autoconfigure/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,11 @@
785785
<artifactId>neo4j-ogm-http-driver</artifactId>
786786
<scope>test</scope>
787787
</dependency>
788+
<dependency>
789+
<groupId>org.neo4j</groupId>
790+
<artifactId>neo4j-ogm-embedded-driver</artifactId>
791+
<scope>test</scope>
792+
</dependency>
788793
<dependency>
789794
<groupId>org.slf4j</groupId>
790795
<artifactId>log4j-over-slf4j</artifactId>

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/MixedNeo4jRepositoriesAutoConfigurationTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.junit.After;
2020
import org.junit.Ignore;
2121
import org.junit.Test;
22+
import org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver;
2223

2324
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
2425
import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration;
@@ -30,6 +31,7 @@
3031
import org.springframework.boot.autoconfigure.domain.EntityScan;
3132
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
3233
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
34+
import org.springframework.boot.test.context.FilteredClassLoader;
3335
import org.springframework.boot.test.util.TestPropertyValues;
3436
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
3537
import org.springframework.context.annotation.Configuration;
@@ -92,6 +94,7 @@ public void testJpaRepositoryConfigurationWithNeo4jOverlapDisabled() {
9294

9395
private void load(Class<?> config, String... environment) {
9496
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
97+
context.setClassLoader(new FilteredClassLoader(EmbeddedDriver.class));
9598
TestPropertyValues.of(environment)
9699
.and("spring.datasource.initialization-mode=never").applyTo(context);
97100
context.register(config);

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfigurationTests.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.github.benmanes.caffeine.cache.Caffeine;
2020
import org.junit.Test;
21+
import org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver;
2122
import org.neo4j.ogm.session.Session;
2223
import org.neo4j.ogm.session.SessionFactory;
2324
import org.neo4j.ogm.session.event.Event;
@@ -63,6 +64,7 @@
6364
public class Neo4jDataAutoConfigurationTests {
6465

6566
private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
67+
.withClassLoader(new FilteredClassLoader(EmbeddedDriver.class))
6668
.withUserConfiguration(TestConfiguration.class)
6769
.withConfiguration(AutoConfigurations.of(Neo4jDataAutoConfiguration.class,
6870
TransactionAutoConfiguration.class));
@@ -120,6 +122,7 @@ public void customConfiguration() {
120122
@Test
121123
public void usesAutoConfigurationPackageToPickUpDomainTypes() {
122124
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
125+
context.setClassLoader(new FilteredClassLoader(EmbeddedDriver.class));
123126
String cityPackage = City.class.getPackage().getName();
124127
AutoConfigurationPackages.register(context, cityPackage);
125128
context.register(Neo4jDataAutoConfiguration.class,
@@ -170,6 +173,7 @@ public void providesARequestScopedBookmarkManagerIfNecessaryAndPossible() {
170173
@Test
171174
public void providesASingletonScopedBookmarkManagerIfNecessaryAndPossible() {
172175
new ApplicationContextRunner()
176+
.withClassLoader(new FilteredClassLoader(EmbeddedDriver.class))
173177
.withUserConfiguration(TestConfiguration.class,
174178
BookmarkManagementEnabledConfiguration.class)
175179
.withConfiguration(AutoConfigurations.of(Neo4jDataAutoConfiguration.class,
@@ -183,7 +187,9 @@ public void providesASingletonScopedBookmarkManagerIfNecessaryAndPossible() {
183187

184188
@Test
185189
public void doesNotProvideABookmarkManagerIfNotPossible() {
186-
this.contextRunner.withClassLoader(new FilteredClassLoader(Caffeine.class))
190+
this.contextRunner
191+
.withClassLoader(
192+
new FilteredClassLoader(Caffeine.class, EmbeddedDriver.class))
187193
.withUserConfiguration(BookmarkManagementEnabledConfiguration.class)
188194
.run((context) -> assertThat(context)
189195
.doesNotHaveBean(BookmarkManager.class));

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jPropertiesTests.java

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,16 @@
1616

1717
package org.springframework.boot.autoconfigure.data.neo4j;
1818

19-
import java.net.URL;
20-
import java.net.URLClassLoader;
21-
2219
import com.hazelcast.util.Base64;
2320
import org.junit.After;
2421
import org.junit.Test;
2522
import org.neo4j.ogm.config.AutoIndexMode;
2623
import org.neo4j.ogm.config.Configuration;
2724
import org.neo4j.ogm.config.Credentials;
25+
import org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver;
2826

2927
import org.springframework.boot.context.properties.EnableConfigurationProperties;
28+
import org.springframework.boot.test.context.FilteredClassLoader;
3029
import org.springframework.boot.test.util.TestPropertyValues;
3130
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
3231

@@ -174,23 +173,9 @@ private static void assertCredentials(Configuration actual, String username,
174173

175174
public Neo4jProperties load(boolean embeddedAvailable, String... environment) {
176175
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
177-
ctx.setClassLoader(new URLClassLoader(new URL[0], getClass().getClassLoader()) {
178-
179-
@Override
180-
protected Class<?> loadClass(String name, boolean resolve)
181-
throws ClassNotFoundException {
182-
if (name.equals(Neo4jProperties.EMBEDDED_DRIVER)) {
183-
if (embeddedAvailable) {
184-
return TestEmbeddedDriver.class;
185-
}
186-
else {
187-
throw new ClassNotFoundException();
188-
}
189-
}
190-
return super.loadClass(name, resolve);
191-
}
192-
193-
});
176+
if (!embeddedAvailable) {
177+
ctx.setClassLoader(new FilteredClassLoader(EmbeddedDriver.class));
178+
}
194179
TestPropertyValues.of(environment).applyTo(ctx);
195180
ctx.register(TestConfiguration.class);
196181
ctx.refresh();
@@ -204,8 +189,4 @@ static class TestConfiguration {
204189

205190
}
206191

207-
private static class TestEmbeddedDriver {
208-
209-
}
210-
211192
}

0 commit comments

Comments
 (0)