Skip to content

Commit 42925a6

Browse files
authored
Merge pull request #625 from michael-simons/fix_sessionconfig_equals
Prevent NPE in SessionConfig#equals.
2 parents 76f83c0 + 412097e commit 42925a6

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

driver/src/main/java/org/neo4j/driver/SessionConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public boolean equals( Object o )
123123
return false;
124124
}
125125
SessionConfig that = (SessionConfig) o;
126-
return Objects.equals( bookmarks, that.bookmarks ) && defaultAccessMode == that.defaultAccessMode && database.equals( that.database );
126+
return Objects.equals( bookmarks, that.bookmarks ) && defaultAccessMode == that.defaultAccessMode && Objects.equals( database, that.database );
127127
}
128128

129129
@Override

driver/src/test/java/org/neo4j/driver/SessionConfigTest.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,16 @@
1818
*/
1919
package org.neo4j.driver;
2020

21-
import org.junit.Assert;
2221
import org.junit.jupiter.api.Test;
2322
import org.junit.jupiter.params.ParameterizedTest;
23+
import org.junit.jupiter.params.provider.Arguments;
2424
import org.junit.jupiter.params.provider.EnumSource;
25+
import org.junit.jupiter.params.provider.MethodSource;
2526
import org.junit.jupiter.params.provider.ValueSource;
2627

2728
import java.util.Arrays;
2829
import java.util.List;
30+
import java.util.stream.Stream;
2931

3032
import org.neo4j.driver.internal.Bookmark;
3133

@@ -37,6 +39,7 @@
3739
import static org.junit.jupiter.api.Assertions.assertFalse;
3840
import static org.junit.jupiter.api.Assertions.assertThrows;
3941
import static org.junit.jupiter.api.Assertions.assertTrue;
42+
import static org.junit.jupiter.params.provider.Arguments.arguments;
4043
import static org.neo4j.driver.SessionConfig.builder;
4144
import static org.neo4j.driver.SessionConfig.defaultConfig;
4245
import static org.neo4j.driver.internal.InternalBookmark.parse;
@@ -49,7 +52,7 @@ void shouldReturnDefaultValues() throws Throwable
4952
{
5053
SessionConfig config = defaultConfig();
5154

52-
Assert.assertEquals( AccessMode.WRITE, config.defaultAccessMode() );
55+
assertEquals( AccessMode.WRITE, config.defaultAccessMode() );
5356
assertFalse( config.database().isPresent() );
5457
assertNull( config.bookmarks() );
5558
}
@@ -77,6 +80,22 @@ void shouldNotAllowNullDatabaseName() throws Throwable
7780
assertThrows( NullPointerException.class, () -> builder().withDatabase( null ) );
7881
}
7982

83+
@ParameterizedTest
84+
@MethodSource("someConfigs")
85+
void nullDatabaseNameMustNotBreakEquals(SessionConfig config1, SessionConfig config2, boolean expectedEquals) {
86+
87+
assertEquals( config1.equals( config2 ), expectedEquals );
88+
}
89+
90+
static Stream<Arguments> someConfigs() {
91+
return Stream.of(
92+
arguments( SessionConfig.builder().build(), SessionConfig.builder().build(), true ),
93+
arguments( SessionConfig.builder().withDatabase( "a" ).build(), SessionConfig.builder().build(), false ),
94+
arguments( SessionConfig.builder().build(), SessionConfig.builder().withDatabase( "a" ).build(), false ),
95+
arguments( SessionConfig.builder().withDatabase( "a" ).build(), SessionConfig.builder().withDatabase( "a" ).build(), true )
96+
);
97+
}
98+
8099
@ParameterizedTest
81100
@ValueSource( strings = {"", ABSENT_DB_NAME} )
82101
void shouldForbiddenEmptyStringDatabaseName( String databaseName ) throws Throwable

0 commit comments

Comments
 (0)