diff --git a/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java b/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java index 551910430b..03d8572e24 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ConnectionHandlingIT.java @@ -254,7 +254,14 @@ void connectionUsedForTransactionReturnedToThePoolWhenTransactionFailsToCommitte { try ( Session session = driver.session() ) { - session.run( "CREATE CONSTRAINT ON (book:Library) ASSERT exists(book.isbn)" ); + if ( neo4j.isNeo4j43OrEarlier() ) + { + session.run( "CREATE CONSTRAINT ON (book:Library) ASSERT exists(book.isbn)" ); + } + else + { + session.run( "CREATE CONSTRAINT FOR (book:Library) REQUIRE book.isbn IS NOT NULL" ); + } } Connection connection1 = connectionPool.lastAcquiredConnectionSpy; diff --git a/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java b/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java index 34e334ba13..0be02d0199 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ErrorIT.java @@ -155,7 +155,17 @@ void shouldExplainConnectionError() void shouldHandleFailureAtRunTime() { String label = UUID.randomUUID().toString(); // avoid clashes with other tests - String query = "CREATE CONSTRAINT ON (a:`" + label + "`) ASSERT a.name IS UNIQUE"; + String query; + + if ( session.isNeo4j43OrEarlier() ) + { + query = "CREATE CONSTRAINT ON (a:`" + label + "`) ASSERT a.name IS UNIQUE"; + } + else + { + query = "CREATE CONSTRAINT FOR (a:`" + label + "`) REQUIRE a.name IS UNIQUE"; + } + // given Transaction tx = session.beginTransaction(); tx.run( query ); diff --git a/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java b/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java index e9422d858f..47403a26d2 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java @@ -125,13 +125,28 @@ void shouldContainCorrectStatistics() assertTrue( session.run( "CREATE (n {magic: 42})" ).consume().counters().containsUpdates() ); assertThat( session.run( "MATCH (n:ALabel) REMOVE n:ALabel " ).consume().counters().labelsRemoved(), equalTo( 1 ) ); - assertThat( session.run( "CREATE INDEX superIndex FOR (n:ALabel) ON (n.prop)" ).consume().counters().indexesAdded(), equalTo( 1 ) ); - assertThat( session.run( "DROP INDEX superIndex" ).consume().counters().indexesRemoved(), equalTo( 1 ) ); - assertThat( session.run( "CREATE CONSTRAINT restrictedConstraint ON (book:Book) ASSERT book.isbn IS UNIQUE" ) - .consume().counters().constraintsAdded(), equalTo( 1 ) ); - assertThat( session.run( "DROP CONSTRAINT restrictedConstraint" ) - .consume().counters().constraintsRemoved(), equalTo( 1 ) ); + if ( neo4j.isNeo4j43OrEarlier() ) + { + assertThat( session.run( "CREATE INDEX ON :ALabel(prop)" ).consume().counters().indexesAdded(), equalTo( 1 ) ); + assertThat( session.run( "DROP INDEX ON :ALabel(prop)" ).consume().counters().indexesRemoved(), equalTo( 1 ) ); + + assertThat( session.run( "CREATE CONSTRAINT restrictedConstraint ON (book:Book) ASSERT book.isbn IS UNIQUE" ) + .consume().counters().constraintsAdded(), equalTo( 1 ) ); + assertThat( session.run( "DROP CONSTRAINT restrictedConstraint" ) + .consume().counters().constraintsRemoved(), equalTo( 1 ) ); + } + else + { + assertThat( session.run( "CREATE INDEX superIndex FOR (n:ALabel) ON (n.prop)" ).consume().counters().indexesAdded(), equalTo( 1 ) ); + assertThat( session.run( "DROP INDEX superIndex" ).consume().counters().indexesRemoved(), equalTo( 1 ) ); + + assertThat( session.run( "CREATE CONSTRAINT restrictedConstraint FOR (book:Book) REQUIRE book.isbn IS UNIQUE" ) + .consume().counters().constraintsAdded(), equalTo( 1 ) ); + assertThat( session.run( "DROP CONSTRAINT restrictedConstraint" ) + .consume().counters().constraintsRemoved(), equalTo( 1 ) ); + } + } @Test @@ -152,7 +167,14 @@ void shouldContainCorrectQueryType() assertThat( session.run("MATCH (n) RETURN 1").consume().queryType(), equalTo( QueryType.READ_ONLY )); assertThat( session.run("CREATE (n)").consume().queryType(), equalTo( QueryType.WRITE_ONLY )); assertThat( session.run("CREATE (n) RETURN (n)").consume().queryType(), equalTo( QueryType.READ_WRITE )); - assertThat( session.run("CREATE INDEX ON :User(p)").consume().queryType(), equalTo( QueryType.SCHEMA_WRITE )); + if ( neo4j.isNeo4j43OrEarlier() ) + { + assertThat( session.run("CREATE INDEX ON :User(p)").consume().queryType(), equalTo( QueryType.SCHEMA_WRITE )); + } + else + { + assertThat( session.run("CREATE INDEX FOR (n:User) ON n.p").consume().queryType(), equalTo( QueryType.SCHEMA_WRITE )); + } } @Test diff --git a/driver/src/test/java/org/neo4j/driver/util/DatabaseExtension.java b/driver/src/test/java/org/neo4j/driver/util/DatabaseExtension.java index 8a1803d4b8..e31315f768 100644 --- a/driver/src/test/java/org/neo4j/driver/util/DatabaseExtension.java +++ b/driver/src/test/java/org/neo4j/driver/util/DatabaseExtension.java @@ -34,7 +34,7 @@ import org.neo4j.driver.internal.BoltServerAddress; import org.neo4j.driver.types.TypeSystem; -import static org.junit.Assume.assumeTrue; +import static java.lang.Integer.parseInt; import static org.neo4j.driver.util.Neo4jRunner.DEFAULT_AUTH_TOKEN; import static org.neo4j.driver.util.Neo4jRunner.HOME_DIR; import static org.neo4j.driver.util.Neo4jRunner.debug; @@ -150,20 +150,6 @@ public File tlsKeyFile() return new File( HOME_DIR, DEFAULT_TLS_KEY_PATH ); } - public void ensureProcedures( String jarName ) throws IOException - { - // These procedures were written against 3.x API. - // As graph database service API is totally changed since 4.0. These procedures are no long valid. - assumeTrue( getMajorVersion() < 4 ); - File procedureJar = new File( HOME_DIR, "plugins/" + jarName ); - if ( !procedureJar.exists() ) - { - FileTools.copyFile( new File( TEST_RESOURCE_FOLDER_PATH, jarName ), procedureJar ); - debug( "Added a new procedure `%s`", jarName ); - runner.forceToRestart(); // needs to force restart as no configuration changed - } - } - public void startDb() { runner.startNeo4j(); @@ -174,13 +160,16 @@ public void stopDb() runner.stopNeo4j(); } - public int getMajorVersion() + public boolean isNeo4j43OrEarlier() { try ( Session session = driver().session() ) { - String protocolVersion = session.readTransaction( tx -> tx.run( "RETURN 1" ).consume().server().protocolVersion() ); - String[] versions = protocolVersion.split( "\\." ); - return Integer.parseInt( versions[0] ); + String neo4jVersion = session.readTransaction( tx -> tx.run( "CALL dbms.components() YIELD versions " + + "RETURN versions[0] AS version" ).single().get( "version" ).asString() ); + String[] versions = neo4jVersion.split( "\\." ); + int major = parseInt( versions[0] ); + int minor = parseInt( versions[1] ); + return major <= 4 && minor <= 3; } }