private Set<String> identifiersOf( JsonNode root ) { Set<String> parentIds = new HashSet<>(); for ( JsonNode id : root.get( "identifiers" ) ) { parentIds.add( id.asText() ); } return parentIds; }
private JsonNode findNamedBean( JsonNode beans, String beanName ) { for ( JsonNode bean : beans ) { JsonNode name = bean.get( "name" ); if ( name != null && name.asText().endsWith( ",name=" + beanName ) ) { return bean; } } throw new NoSuchElementException(); }
private void assertPath( JsonNode jsonURIString, String path, String hostname, final String scheme ) { assertTrue( "Expected a uri matching '" + scheme + "://" + hostname + ":\\d+/db/data" + path + "', " + "but got '" + jsonURIString.asText() + "'.", jsonURIString.asText().matches( scheme + "://" + hostname + ":\\d+/db/data" + path ) ); }
public String stringFromContent( String key ) throws JsonParseException { return get(key).asText(); }
@Test public void shouldIncludeCause() throws Exception { // Given ExceptionRepresentation rep = new ExceptionRepresentation( new RuntimeException( "Hoho", new RuntimeException( "Haha", new RuntimeException( "HAHA!" ) ) ) ); // When JsonNode out = serialize( rep ); // Then assertThat( out.get("cause").get("message").asText(), is( "Haha" ) ); assertThat( out.get( "cause" ).get("cause").get("message").asText(), is( "HAHA!") ); }
private static void assertCrsEqual( CoordinateReferenceSystem crs, JsonNode element ) { assertEquals( crs.getName(), element.get( "crs" ).get( "name" ).asText() ); }
@Test public void shouldRenderErrorsWithNeo4jStatusCode() throws Exception { // Given ExceptionRepresentation rep = new ExceptionRepresentation( new KernelException( UnknownError, "Hello" ) { } ); // When JsonNode out = serialize( rep ); // Then assertThat(out.get("errors").get(0).get("code").asText(), equalTo("Neo.DatabaseError.General.UnknownError")); assertThat(out.get("errors").get(0).get("message").asText(), equalTo("Hello")); }
private static void assertGeometryTypeEqual( GeometryType expected, JsonNode element ) { assertEquals( expected.getName(), element.get( "type" ).asText() ); }
@Test public void shouldReturnReadOnlyStatusWhenCreatingNodes() throws Exception { // Given HTTP.Response response = http.POST( "db/data/transaction/commit", quotedJson( "{ 'statements': [ { 'statement': 'CREATE (node)' } ] }" ) ); // Then JsonNode error = response.get( "errors" ).get( 0 ); String code = error.get( "code" ).asText(); String message = error.get( "message" ).asText(); assertEquals( "Neo.ClientError.General.ForbiddenOnReadOnlyDatabase", code ); assertThat( message, containsString( "This is a read only Neo4j instance" ) ); }
private static void assertTypeEqual( String expectedType, HTTP.Response response ) throws JsonParseException { JsonNode data = response.get( "results" ).get( 0 ).get( "data" ); JsonNode meta = data.get( 0 ).get( "meta" ); assertEquals( 1, meta.size() ); assertEquals( expectedType, meta.get( 0 ).get( "type" ).asText() ); }
@Test public void shouldOnlyGetNodeTypeInMetaAsNodeProperties() throws Throwable { HTTP.Response response = runQuery( "CREATE (account {name: \\\"zhen\\\", creationTime: localdatetime({year: 1984, month: 10, day: 21, hour: 12, minute: 34})}) RETURN account" ); assertEquals( 200, response.status() ); assertNoErrors( response ); JsonNode data = getSingleData( response ); JsonNode row = getSingle( data, "row" ); assertThat( row.get( "creationTime" ).asText(), equalTo( "1984-10-21T12:34" ) ); assertThat( row.get( "name" ).asText(), equalTo( "zhen" ) ); JsonNode meta = getSingle( data, "meta" ); assertThat( meta.get( "type" ).asText(), equalTo( "node" ) ); }
@Test public void shouldReturnReadOnlyStatusWhenCreatingNodesWhichTransitivelyCreateTokens() throws Exception { // Given // When HTTP.Response response = http.POST( "db/data/transaction/commit", quotedJson( "{ 'statements': [ { 'statement': 'CREATE (node:Node)' } ] }" ) ); // Then JsonNode error = response.get( "errors" ).get( 0 ); String code = error.get( "code" ).asText(); String message = error.get( "message" ).asText(); assertEquals( "Neo.ClientError.General.ForbiddenOnReadOnlyDatabase", code ); assertThat( message, containsString( "This is a read only Neo4j instance" ) ); }
@Test public void shouldExcludeLegacyFormatIfAsked() throws Exception { // Given ExceptionRepresentation rep = new ExceptionRepresentation( new KernelException( UnknownError, "Hello" ) { }, /*legacy*/false ); // When JsonNode out = serialize( rep ); // Then assertThat(out.get("errors").get(0).get("code").asText(), equalTo("Neo.DatabaseError.General.UnknownError")); assertThat(out.get("errors").get(0).get("message").asText(), equalTo("Hello")); assertThat(out.has( "message" ), equalTo(false)); }
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 public void shouldSayMalformedHeaderIfMalformedAuthorization() throws Exception { // Given startServerWithConfiguredUser(); // When HTTP.Response response = HTTP.withHeaders( HttpHeaders.AUTHORIZATION, "This makes no sense" ).GET( dataURL() ); // Then assertThat( response.status(), equalTo( 400 ) ); assertThat( response.get( "errors" ).get( 0 ).get( "code" ).asText(), equalTo( "Neo.ClientError.Request.InvalidFormat" ) ); assertThat( response.get( "errors" ).get( 0 ).get( "message" ).asText(), equalTo( "Invalid authentication header." ) ); }
@Test public void shouldGetHelpfulErrorOnProcedureThrowsException() 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.procThatThrows' } ] }" ) ); String error = response.get( "errors" ).get( 0 ).get( "message" ).asText(); assertEquals( "Failed to invoke procedure `org.neo4j.harness.procThatThrows`: " + "Caused by: java.lang.RuntimeException: This is an exception", error ); } }
@Test public void shouldReportCommunityEdition() throws Exception { // Given String releaseVersion = server.getDatabase().getGraph().getDependencyResolver().resolveDependency( KernelData .class ).version().getReleaseVersion(); // When HTTP.Response res = HTTP.GET( functionalTestHelper.managementUri() + "/" + VersionAndEditionService.SERVER_PATH ); // Then assertEquals( 200, res.status() ); assertThat( res.get( "edition" ).asText(), equalTo( "community" ) ); assertThat( res.get( "version" ).asText(), equalTo( releaseVersion ) ); } }
@Test public void txEndpointShouldReplyWithHttpsWhenItReturnsURLs() throws Exception { startServer(); String baseUri = server.baseUri().toString(); HTTP.Response response = POST( baseUri + "db/data/transaction", quotedJson( "{'statements':[]}" ) ); assertThat( response.location(), startsWith( baseUri ) ); assertThat( response.get( "commit" ).asText(), startsWith( baseUri ) ); }