private void assertQueryGetsError( ServerControls server, String query, String error ) throws Throwable { HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': '" + query + "' } ] }" ) ); assertThat( response.get( "errors" ).toString(), containsString( error ) ); } }
private void assertQueryGetsError( ServerControls server, String query, String error ) throws Throwable { HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': '" + query + "' } ] }" ) ); assertThat( response.get( "errors" ).toString(), containsString( error ) ); } }
private void assertQueryGetsValue( ServerControls server, String query, long value ) throws Throwable { HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': '" + query + "' } ] }" ) ); assertEquals( "[]", response.get( "errors" ).toString() ); JsonNode result = response.get( "results" ).get( 0 ); assertEquals( "value", result.get( "columns" ).get( 0 ).asText() ); assertEquals( value, result.get( "data" ).get( 0 ).get( "row" ).get( 0 ).asLong() ); }
private void assertQueryGetsValue( ServerControls server, String query, long value ) throws Throwable { HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': '" + query + "' } ] }" ) ); assertEquals( "[]", response.get( "errors" ).toString() ); JsonNode result = response.get( "results" ).get( 0 ); assertEquals( "value", result.get( "columns" ).get( 0 ).asText() ); assertEquals( value, result.get( "data" ).get( 0 ).get( "row" ).get( 0 ).asLong() ); }
@Test(expectedExceptions = DataConversionException.class, expectedExceptionsMessageRegExp = "Input data does not have record.") public void testFailureWithoutRecord() throws DataConversionException, IOException { ObjectMapper objectMapper = new ObjectMapper(); // Build the input record without data HashMap<String, Object> map = new HashMap<>(); Metadata md = new Metadata(); md.getRecordMetadata().put("test1", "test2"); map.put("rMd", md); JsonNode jsonNode = objectMapper.valueToTree(map); RecordWithMetadata<byte[]> inputRecord = new RecordWithMetadata<>(jsonNode.toString().getBytes(), null); EnvelopedRecordWithMetadataToRecordWithMetadata converter = new EnvelopedRecordWithMetadataToRecordWithMetadata(); converter.convertRecord(null, inputRecord, null); }
@Test public void testInjectUuids() throws IOException { String jsonWithUUIds = AvroUtils.injectUuids(data, avroSchema); Assert.assertTrue("Generated json is not equal json with UUIDs", jsonWithUUIds.equals(dataWithUUIDs.toString())); }
@Test public void shouldWorkWithInjectableFromKernelExtension() throws Throwable { // When try ( ServerControls server = createServer( MyProceduresUsingMyService.class ).newServer() ) { // Then HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': 'CALL hello' } ] }" ) ); assertEquals( "[]", response.get( "errors" ).toString() ); JsonNode result = response.get( "results" ).get( 0 ); assertEquals( "result", result.get( "columns" ).get( 0 ).asText() ); assertEquals( "world", result.get( "data" ).get( 0 ).get( "row" ).get( 0 ).asText() ); } }
@Test public void shouldLaunchWithDeclaredProcedures() throws Exception { // When try ( ServerControls server = createServer( MyProcedures.class ).newServer() ) { // Then HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': 'CALL org.neo4j.harness.myProc' } ] }" ) ); JsonNode result = response.get( "results" ).get( 0 ); assertEquals( "someNumber", result.get( "columns" ).get( 0 ).asText() ); assertEquals( 1337, result.get( "data" ).get( 0 ).get( "row" ).get( 0 ).asInt() ); assertEquals( "[]", response.get( "errors" ).toString() ); } }
@Test public void shouldWorkWithInjectableFromKernelExtension() throws Throwable { // When try ( ServerControls server = createServer( MyFunctionsUsingMyService.class ).newServer() ) { // Then HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': 'RETURN my.hello() AS result' } ] }" ) ); assertEquals( "[]", response.get( "errors" ).toString() ); JsonNode result = response.get( "results" ).get( 0 ); assertEquals( "result", result.get( "columns" ).get( 0 ).asText() ); assertEquals( "world", result.get( "data" ).get( 0 ).get( "row" ).get( 0 ).asText() ); } }
@Test public void shouldLaunchWithDeclaredFunctions() throws Exception { // When try ( ServerControls server = createServer( MyFunctions.class ).newServer() ) { // Then HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': 'RETURN org.neo4j.harness.myFunc() AS someNumber' } ] " + "}" ) ); JsonNode result = response.get( "results" ).get( 0 ); assertEquals( "someNumber", result.get( "columns" ).get( 0 ).asText() ); assertEquals( 1337, result.get( "data" ).get( 0 ).get( "row" ).get( 0 ).asInt() ); assertEquals( "[]", response.get( "errors" ).toString() ); } }
@Test public void shouldLaunchWithDeclaredFunctions() throws Exception { // When Class<MyFunctions> functionClass = MyFunctions.class; try ( ServerControls server = createServer( functionClass ).newServer() ) { // Then HTTP.Response response = HTTP.POST( server.httpURI().resolve( "db/data/transaction/commit" ).toString(), quotedJson( "{ 'statements': [ { 'statement': 'RETURN org.neo4j.harness.myFunc() AS someNumber' } ] " + "}" ) ); JsonNode result = response.get( "results" ).get( 0 ); assertEquals( "someNumber", result.get( "columns" ).get( 0 ).asText() ); assertEquals( 1337, result.get( "data" ).get( 0 ).get( "row" ).get( 0 ).asInt() ); assertEquals( "[]", response.get( "errors" ).toString() ); } }
@Test public void shouldHandleTemporalArraysUsingGraphResultDataContent() throws Exception { //Given GraphDatabaseFacade db = server().getDatabase().getGraph(); ZonedDateTime date = ZonedDateTime.of( 1980, 3, 11, 0, 0, 0, 0, ZoneId.of( "Europe/Stockholm" ) ); try ( Transaction tx = db.beginTx() ) { Node node = db.createNode( label( "N" ) ); node.setProperty( "dates", new ZonedDateTime[]{date} ); tx.success(); } //When HTTP.Response response = runQuery( "MATCH (n:N) RETURN n", "graph" ); //Then assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode row = response.get( "results" ).get( 0 ).get( "data" ).get( 0 ).get( "graph" ) .get( "nodes" ).get( 0 ).get( "properties" ).get( "dates" ).get( 0 ); assertEquals( "\"1980-03-11T00:00+01:00[Europe/Stockholm]\"", row.toString() ); }
@Test public void shouldHandleDurationArraysUsingGraphResultDataContent() throws Exception { //Given GraphDatabaseFacade db = server().getDatabase().getGraph(); Duration duration = Duration.ofSeconds( 73 ); try ( Transaction tx = db.beginTx() ) { Node node = db.createNode( label( "N" ) ); node.setProperty( "durations", new Duration[]{duration} ); tx.success(); } //When HTTP.Response response = runQuery( "MATCH (n:N) RETURN n", "graph" ); //Then assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode row = response.get( "results" ).get( 0 ).get( "data" ).get( 0 ).get( "graph" ) .get("nodes").get( 0 ).get( "properties" ).get( "durations" ).get( 0 ); assertEquals( "\"PT1M13S\"", row.toString() ); }
@Test public void shouldHandleDurationUsingGraphResultDataContent() throws Exception { //Given GraphDatabaseFacade db = server().getDatabase().getGraph(); Duration duration = Duration.ofSeconds( 73 ); try ( Transaction tx = db.beginTx() ) { Node node = db.createNode( label( "N" ) ); node.setProperty( "duration", duration ); tx.success(); } //When HTTP.Response response = runQuery( "MATCH (n:N) RETURN n", "graph" ); //Then assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode row = response.get( "results" ).get( 0 ).get( "data" ).get( 0 ).get( "graph" ) .get("nodes").get( 0 ).get( "properties" ).get( "duration" ); assertEquals( "\"PT1M13S\"", row.toString() ); }
@Test public void shouldHandleDurationArraysUsingRestResultDataContent() throws Exception { //Given GraphDatabaseFacade db = server().getDatabase().getGraph(); Duration duration = Duration.ofSeconds( 73 ); try ( Transaction tx = db.beginTx() ) { Node node = db.createNode( label( "N" ) ); node.setProperty( "durations", new Duration[]{duration} ); tx.success(); } //When HTTP.Response response = runQuery( "MATCH (n:N) RETURN n", "rest" ); //Then assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode row = response.get( "results" ).get( 0 ).get( "data" ).get( 0 ).get( "rest" ) .get( 0 ).get( "data" ).get( "durations" ).get( 0 ); assertEquals( "\"PT1M13S\"", row.toString() ); }
@Test public void shouldHandleTemporalArrays() throws Exception { //Given GraphDatabaseFacade db = server().getDatabase().getGraph(); ZonedDateTime date = ZonedDateTime.of( 1980, 3, 11, 0, 0, 0, 0, ZoneId.of( "Europe/Stockholm" ) ); try ( Transaction tx = db.beginTx() ) { Node node = db.createNode( label( "N" ) ); node.setProperty( "date", new ZonedDateTime[]{date} ); tx.success(); } //When HTTP.Response response = runQuery( "MATCH (n:N) RETURN n" ); //Then assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode row = response.get( "results" ).get( 0 ).get( "data" ).get( 0 ).get( "row" ).get( 0 ) .get( "date" ).get( 0 ); assertEquals( "\"1980-03-11T00:00+01:00[Europe/Stockholm]\"", row.toString() ); }
public static void assertNoErrors( HTTP.Response response ) throws JsonParseException { assertEquals( "[]", response.get( "errors" ).toString() ); assertEquals( 0, response.get( "errors" ).size() ); } }
@Test public void shouldHandleDurationArrays() throws Exception { //Given GraphDatabaseFacade db = server().getDatabase().getGraph(); Duration duration = Duration.ofSeconds( 73 ); try ( Transaction tx = db.beginTx() ) { Node node = db.createNode( label( "N" ) ); node.setProperty( "duration", new Duration[]{duration} ); tx.success(); } //When HTTP.Response response = runQuery( "MATCH (n:N) RETURN n" ); //Then assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode row = response.get( "results" ).get( 0 ).get( "data" ).get( 0 ).get( "row" ).get( 0 ) .get( "duration" ).get( 0 ); assertEquals( "\"PT1M13S\"", row.toString() ); }
@Test public void shouldHandleDurationUsingRestResultDataContent() throws Exception { //Given GraphDatabaseFacade db = server().getDatabase().getGraph(); Duration duration = Duration.ofSeconds( 73 ); try ( Transaction tx = db.beginTx() ) { Node node = db.createNode( label( "N" ) ); node.setProperty( "duration", duration ); tx.success(); } //When HTTP.Response response = runQuery( "MATCH (n:N) RETURN n", "rest" ); //Then assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode row = response.get( "results" ).get( 0 ).get( "data" ).get( 0 ).get( "rest" ) .get( 0 ).get( "data" ).get( "duration" ); assertEquals( "\"PT1M13S\"", row.toString() ); }