2222import org .junit .jupiter .api .AfterEach ;
2323import org .junit .jupiter .api .BeforeAll ;
2424import org .junit .jupiter .api .Test ;
25- import org .mockito .ArgumentCaptor ;
2625import reactor .core .publisher .Flux ;
2726import reactor .core .publisher .Mono ;
2827import reactor .test .StepVerifier ;
2928
3029import java .net .URI ;
3130import java .util .ArrayList ;
3231import java .util .List ;
33- import java .util .Optional ;
3432import java .util .function .Consumer ;
3533
3634import org .neo4j .driver .AccessMode ;
3937import org .neo4j .driver .Config ;
4038import org .neo4j .driver .Driver ;
4139import org .neo4j .driver .GraphDatabase ;
42- import org .neo4j .driver .Logger ;
43- import org .neo4j .driver .Record ;
4440import org .neo4j .driver .Result ;
4541import org .neo4j .driver .Session ;
4642import org .neo4j .driver .Transaction ;
6763import static org .junit .jupiter .api .Assertions .assertNull ;
6864import static org .junit .jupiter .api .Assertions .assertThrows ;
6965import static org .junit .jupiter .api .Assertions .assertTrue ;
70- import static org .mockito .ArgumentMatchers .any ;
71- import static org .mockito .Mockito .atLeastOnce ;
72- import static org .mockito .Mockito .mock ;
73- import static org .mockito .Mockito .verify ;
74- import static org .mockito .Mockito .when ;
7566import static org .neo4j .driver .SessionConfig .builder ;
7667import static org .neo4j .driver .SessionConfig .forDatabase ;
77- import static org .neo4j .driver .Values .parameters ;
7868import static org .neo4j .driver .internal .logging .DevNullLogging .DEV_NULL_LOGGING ;
7969import static org .neo4j .driver .util .StubServer .INSECURE_CONFIG ;
8070import static org .neo4j .driver .util .StubServer .insecureBuilder ;
81- import static org .neo4j .driver .util .TestUtil .asOrderedSet ;
8271import static org .neo4j .driver .util .TestUtil .await ;
8372
8473class DirectDriverBoltKitIT
@@ -97,140 +86,6 @@ public void killServers()
9786 stubController .reset ();
9887 }
9988
100- @ Test
101- void shouldBeAbleRunCypher () throws Exception
102- {
103- StubServer server = stubController .startStub ( "return_x.script" , 9001 );
104- URI uri = URI .create ( "bolt://127.0.0.1:9001" );
105- int x ;
106-
107- try ( Driver driver = GraphDatabase .driver ( uri , INSECURE_CONFIG ) )
108- {
109- try ( Session session = driver .session () )
110- {
111- Record record = session .run ( "RETURN {x}" , parameters ( "x" , 1 ) ).single ();
112- x = record .get ( 0 ).asInt ();
113- }
114- }
115-
116- assertThat ( x , equalTo ( 1 ) );
117- assertThat ( server .exitStatus (), equalTo ( 0 ) );
118- }
119-
120- @ Test
121- void shouldSendMultipleBookmarks () throws Exception
122- {
123- StubServer server = stubController .startStub ( "multiple_bookmarks.script" , 9001 );
124-
125- Bookmark bookmarks = InternalBookmark .parse ( asOrderedSet ( "neo4j:bookmark:v1:tx5" , "neo4j:bookmark:v1:tx29" ,
126- "neo4j:bookmark:v1:tx94" , "neo4j:bookmark:v1:tx56" , "neo4j:bookmark:v1:tx16" , "neo4j:bookmark:v1:tx68" ) );
127-
128- try ( Driver driver = GraphDatabase .driver ( "bolt://localhost:9001" , INSECURE_CONFIG );
129- Session session = driver .session ( builder ().withBookmarks ( bookmarks ).build () ) )
130- {
131- try ( Transaction tx = session .beginTransaction () )
132- {
133- tx .run ( "CREATE (n {name:'Bob'})" );
134- tx .commit ();
135- }
136-
137- assertEquals ( InternalBookmark .parse ( "neo4j:bookmark:v1:tx95" ), session .lastBookmark () );
138- }
139- finally
140- {
141- assertEquals ( 0 , server .exitStatus () );
142- }
143- }
144-
145- @ Test
146- void shouldSendNullRoutingContextForBoltUri () throws Exception
147- {
148- StubServer server = StubServer .start ( "hello_with_routing_context_bolt.script" , 9001 );
149-
150- try ( Driver driver = GraphDatabase .driver ( "bolt://localhost:9001" , INSECURE_CONFIG );
151- Session session = driver .session () )
152- {
153- List <String > names = session .run ( "MATCH (n) RETURN n.name" ).list ( record -> record .get ( 0 ).asString () );
154- assertEquals ( asList ( "Foo" , "Bar" ), names );
155-
156- }
157- finally
158- {
159- assertEquals ( 0 , server .exitStatus () );
160- }
161- }
162-
163- @ Test
164- void shouldLogConnectionIdInDebugMode () throws Exception
165- {
166- StubServer server = stubController .startStub ( "hello_run_exit.script" , 9001 );
167-
168- Logger logger = mock ( Logger .class );
169- when ( logger .isDebugEnabled () ).thenReturn ( true );
170-
171- Config config = Config .builder ()
172- .withLogging ( ignore -> logger )
173- .withoutEncryption ()
174- .build ();
175-
176- try ( Driver driver = GraphDatabase .driver ( "bolt://localhost:9001" , config );
177- Session session = driver .session () )
178- {
179- List <String > names = session .run ( "MATCH (n) RETURN n.name" ).list ( record -> record .get ( 0 ).asString () );
180- assertEquals ( asList ( "Foo" , "Bar" ), names );
181-
182- ArgumentCaptor <String > messageCaptor = ArgumentCaptor .forClass ( String .class );
183- verify ( logger , atLeastOnce () ).debug ( messageCaptor .capture (), any ( Object [].class ) );
184-
185- Optional <String > logMessageWithConnectionId = messageCaptor .getAllValues ()
186- .stream ()
187- .filter ( line -> line .contains ( "bolt-123456789" ) )
188- .findAny ();
189-
190- assertTrue ( logMessageWithConnectionId .isPresent (),
191- "Expected log call did not happen. All debug log calls:\n " + String .join ( "\n " , messageCaptor .getAllValues () ) );
192- }
193- finally
194- {
195- assertEquals ( 0 , server .exitStatus () );
196- }
197- }
198-
199- @ Test
200- void shouldSendReadAccessModeInQueryMetadata () throws Exception
201- {
202- StubServer server = stubController .startStub ( "hello_run_exit_read.script" , 9001 );
203-
204-
205- try ( Driver driver = GraphDatabase .driver ( "bolt://localhost:9001" , INSECURE_CONFIG );
206- Session session = driver .session ( builder ().withDefaultAccessMode ( AccessMode .READ ).build () ) )
207- {
208- List <String > names = session .run ( "MATCH (n) RETURN n.name" ).list ( record -> record .get ( 0 ).asString () );
209- assertEquals ( asList ( "Foo" , "Bar" ), names );
210- }
211- finally
212- {
213- assertEquals ( 0 , server .exitStatus () );
214- }
215- }
216-
217- @ Test
218- void shouldNotSendWriteAccessModeInQueryMetadata () throws Exception
219- {
220- StubServer server = stubController .startStub ( "hello_run_exit.script" , 9001 );
221-
222- try ( Driver driver = GraphDatabase .driver ( "bolt://localhost:9001" , INSECURE_CONFIG );
223- Session session = driver .session ( builder ().withDefaultAccessMode ( AccessMode .WRITE ).build () ) )
224- {
225- List <String > names = session .run ( "MATCH (n) RETURN n.name" ).list ( record -> record .get ( 0 ).asString () );
226- assertEquals ( asList ( "Foo" , "Bar" ), names );
227- }
228- finally
229- {
230- assertEquals ( 0 , server .exitStatus () );
231- }
232- }
233-
23489 @ Test
23590 void shouldCloseChannelWhenResetFails () throws Exception
23691 {
@@ -597,25 +452,6 @@ void shouldBeAbleHandleNOOPsDuringRunCypher() throws Exception
597452 assertThat ( server .exitStatus (), equalTo ( 0 ) );
598453 }
599454
600- @ Test
601- void shouldSendCustomerUserAgentInHelloMessage () throws Exception
602- {
603- StubServer server = stubController .startStub ( "hello_with_custom_user_agent.script" , 9001 );
604-
605- Config config = Config .builder ().withUserAgent ( "AwesomeClient" ).build ();
606-
607- try ( Driver driver = GraphDatabase .driver ( "bolt://localhost:9001" , config );
608- Session session = driver .session ( builder ().withDefaultAccessMode ( AccessMode .WRITE ).build () ) )
609- {
610- List <String > names = session .run ( "MATCH (n) RETURN n.name" ).list ( record -> record .get ( 0 ).asString () );
611- assertEquals ( asList ( "Foo" , "Bar" ), names );
612- }
613- finally
614- {
615- assertEquals ( 0 , server .exitStatus () );
616- }
617- }
618-
619455 private static void testTxCloseErrorPropagation ( String script , Consumer <Transaction > txAction , String expectedErrorMessage )
620456 throws Exception
621457 {
0 commit comments