1010import org .neo4j .driver .v1 .Session ;
1111import org .neo4j .driver .v1 .StatementResult ;
1212import org .neo4j .driver .v1 .Transaction ;
13+ import org .neo4j .driver .v1 .summary .ResultSummary ;
14+ import org .neo4j .driver .v1 .summary .ServerInfo ;
1315import org .neo4j .shell .ConnectionConfig ;
1416import org .neo4j .shell .TriFunction ;
1517import org .neo4j .shell .exception .CommandException ;
@@ -53,49 +55,46 @@ public Driver apply(String uri, AuthToken authToken, Config config) {
5355 return new FakeDriver () {
5456 @ Override
5557 public Session session () {
56- return new FakeSession () {
57- @ Override
58- public String server () {
59- return null ;
60- }
61- };
58+ return new FakeSession ();
6259 }
6360 };
6461 }
6562 };
6663 BoltStateHandler handler = new BoltStateHandler (provider );
67- ConnectionConfig config = new ConnectionConfig ( logger , "bolt://" , "" , -1 , "" , "" , false );
64+ ConnectionConfig config = new ConnectionConfig (logger , "bolt://" , "" , -1 , "" , "" , false );
6865 handler .connect (config );
6966
7067 assertEquals ("" , handler .getServerVersion ());
7168 }
7269
7370 @ Test
7471 public void versionIsNotEmptyAfterConnect () throws CommandException {
75- RecordingDriverProvider provider = new RecordingDriverProvider () {
76- @ Override
77- public Driver apply (String uri , AuthToken authToken , Config config ) {
78- super .apply (uri , authToken , config );
79- return new FakeDriver () {
80- @ Override
81- public Session session () {
82- return new FakeSession () {
83- @ Override
84- public String server () {
85- return "Neo4j/9.4.1-ALPHA" ;
86- }
87- };
88- }
89- };
90- }
91- };
92- BoltStateHandler handler = new BoltStateHandler (provider );
72+ Session sessionMock = mock (Session .class );
73+ StatementResult resultMock = mock (StatementResult .class );
74+ Driver driverMock = mock (Driver .class );
75+
76+ stubVersion (resultMock , "Neo4j/9.4.1-ALPHA" );
77+ when (driverMock .session ()).thenReturn (sessionMock );
78+ when (sessionMock .run ("RETURN 1" )).thenReturn (resultMock );
79+
80+ when (sessionMock .isOpen ()).thenReturn (true );
81+
82+ BoltStateHandler handler = new BoltStateHandler ((s , authToken , config ) -> driverMock );
9383 ConnectionConfig config = new ConnectionConfig (logger , "bolt://" , "" , -1 , "" , "" , false );
9484 handler .connect (config );
9585
9686 assertEquals ("9.4.1-ALPHA" , handler .getServerVersion ());
9787 }
9888
89+ private void stubVersion (StatementResult resultMock , String value ) {
90+ ResultSummary resultSummary = mock (ResultSummary .class );
91+ ServerInfo serverInfo = mock (ServerInfo .class );
92+
93+ when (resultSummary .server ()).thenReturn (serverInfo );
94+ when (serverInfo .version ()).thenReturn (value );
95+ when (resultMock .summary ()).thenReturn (resultSummary );
96+ }
97+
9998 @ Test
10099 public void closeTransactionAfterRollback () throws CommandException {
101100 boltStateHandler .connect ();
@@ -117,13 +116,16 @@ public void exceptionsFromSilentDisconnectAreSuppressedToReportOriginalErrors()
117116 Driver mockedDriver = mock (Driver .class );
118117 Session session = mock (Session .class );
119118 StatementResult resultMock = mock (StatementResult .class );
119+
120120 RuntimeException originalException = new RuntimeException ("original exception" );
121121 RuntimeException thrownFromSilentDisconnect = new RuntimeException ("exception from silent disconnect" );
122122
123123 OfflineBoltStateHandler boltStateHandler = new OfflineBoltStateHandler (mockedDriver );
124124
125+ stubVersion (resultMock , "neo4j-version" );
125126 when (mockedDriver .session ()).thenReturn (session );
126127 when (session .run ("RETURN 1" )).thenReturn (resultMock );
128+
127129 when (resultMock .consume ()).thenThrow (originalException );
128130 doThrow (thrownFromSilentDisconnect ).when (session ).close ();
129131
@@ -229,6 +231,7 @@ public void resetSessionOnReset() throws Exception {
229231 Driver driverMock = mock (Driver .class );
230232 Transaction transactionMock = mock (Transaction .class );
231233
234+ stubVersion (resultMock , "neo4j-version" );
232235 when (driverMock .session ()).thenReturn (sessionMock );
233236 when (sessionMock .run ("RETURN 1" )).thenReturn (resultMock );
234237 when (sessionMock .isOpen ()).thenReturn (true );
@@ -288,6 +291,7 @@ public void turnOnEncryptionIfRequested() throws CommandException {
288291 * Bolt state with faked bolt interactions
289292 */
290293 private static class OfflineBoltStateHandler extends BoltStateHandler {
294+
291295 public OfflineBoltStateHandler (Driver driver ) {
292296 super ((uri , authToken , config ) -> driver );
293297 }
0 commit comments