Search in sources :

Example 46 with JsonNode

use of org.codehaus.jackson.JsonNode in project neo4j by neo4j.

the class TransactionMatchers method hasErrors.

public static Matcher<? super HTTP.Response> hasErrors(final Status... expectedErrors) {
    return new TypeSafeMatcher<HTTP.Response>() {

        @Override
        protected boolean matchesSafely(HTTP.Response response) {
            try {
                Iterator<JsonNode> errors = response.get("errors").iterator();
                Iterator<Status> expected = iterator(expectedErrors);
                while (expected.hasNext()) {
                    assertTrue(errors.hasNext());
                    assertThat(errors.next().get("code").asText(), equalTo(expected.next().code().serialize()));
                }
                if (errors.hasNext()) {
                    JsonNode error = errors.next();
                    fail("Expected no more errors, but got " + error.get("code") + " - '" + error.get("message") + "'.");
                }
                return true;
            } catch (JsonParseException e) {
                return false;
            }
        }

        @Override
        public void describeTo(Description description) {
        }
    };
}
Also used : Status(org.neo4j.kernel.api.exceptions.Status) TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) HTTP(org.neo4j.test.server.HTTP) JsonNode(org.codehaus.jackson.JsonNode) JsonParseException(org.neo4j.server.rest.domain.JsonParseException)

Example 47 with JsonNode

use of org.codehaus.jackson.JsonNode in project neo4j by neo4j.

the class TransactionMatchers method restContainsDeletedEntities.

public static Matcher<? super HTTP.Response> restContainsDeletedEntities(final int amount) {
    return new TypeSafeMatcher<HTTP.Response>() {

        @Override
        protected boolean matchesSafely(HTTP.Response response) {
            try {
                Iterator<JsonNode> entities = getJsonNodeWithName(response, "rest").iterator();
                for (int i = 0; i < amount; ++i) {
                    assertTrue(entities.hasNext());
                    JsonNode node = entities.next();
                    assertThat(node.get("metadata").get("deleted").asBoolean(), equalTo(Boolean.TRUE));
                }
                if (entities.hasNext()) {
                    fail("Expected no more entities");
                }
                return true;
            } catch (JsonParseException e) {
                return false;
            }
        }

        @Override
        public void describeTo(Description description) {
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) HTTP(org.neo4j.test.server.HTTP) JsonNode(org.codehaus.jackson.JsonNode) JsonParseException(org.neo4j.server.rest.domain.JsonParseException)

Example 48 with JsonNode

use of org.codehaus.jackson.JsonNode in project neo4j by neo4j.

the class TransactionMatchers method rowContainsDeletedEntitiesInPath.

public static Matcher<? super HTTP.Response> rowContainsDeletedEntitiesInPath(final int nodes, final int rels) {
    return new TypeSafeMatcher<HTTP.Response>() {

        @Override
        protected boolean matchesSafely(HTTP.Response response) {
            try {
                Iterator<JsonNode> meta = getJsonNodeWithName(response, "meta").iterator();
                int nodeCounter = 0;
                int relCounter = 0;
                assertTrue("Expected to find a JSON node, but there was none", meta.hasNext());
                JsonNode node = meta.next();
                assertTrue("Expected the node to be a list (for a path)", node.isArray());
                for (JsonNode inner : node) {
                    String type = inner.get("type").getTextValue();
                    switch(type) {
                        case "node":
                            if (inner.get("deleted").asBoolean()) {
                                ++nodeCounter;
                            }
                            break;
                        case "relationship":
                            if (inner.get("deleted").asBoolean()) {
                                ++relCounter;
                            }
                            break;
                        default:
                            fail("Unexpected type: " + type);
                            break;
                    }
                }
                assertEquals(nodes, nodeCounter);
                assertEquals(rels, relCounter);
                return true;
            } catch (JsonParseException e) {
                return false;
            }
        }

        @Override
        public void describeTo(Description description) {
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) HTTP(org.neo4j.test.server.HTTP) JsonNode(org.codehaus.jackson.JsonNode) JsonParseException(org.neo4j.server.rest.domain.JsonParseException)

Example 49 with JsonNode

use of org.codehaus.jackson.JsonNode in project neo4j by neo4j.

the class TransactionMatchers method graphContainsDeletedNodes.

public static Matcher<? super HTTP.Response> graphContainsDeletedNodes(final int amount) {
    return new TypeSafeMatcher<HTTP.Response>() {

        @Override
        protected boolean matchesSafely(HTTP.Response response) {
            try {
                Iterator<JsonNode> nodes = getJsonNodeWithName(response, "graph").get("nodes").iterator();
                for (int i = 0; i < amount; ++i) {
                    assertTrue(nodes.hasNext());
                    JsonNode node = nodes.next();
                    assertThat(node.get("deleted").asBoolean(), equalTo(Boolean.TRUE));
                }
                while (nodes.hasNext()) {
                    JsonNode node = nodes.next();
                    assertNull(node.get("deleted"));
                }
                return true;
            } catch (JsonParseException e) {
                return false;
            }
        }

        @Override
        public void describeTo(Description description) {
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) HTTP(org.neo4j.test.server.HTTP) JsonNode(org.codehaus.jackson.JsonNode) JsonParseException(org.neo4j.server.rest.domain.JsonParseException)

Example 50 with JsonNode

use of org.codehaus.jackson.JsonNode in project neo4j by neo4j.

the class TransactionMatchers method assertElementAtMetaIndex.

private static boolean assertElementAtMetaIndex(HTTP.Response response, int[] indexes, String element) {
    try {
        Iterator<JsonNode> meta = getJsonNodeWithName(response, "meta").iterator();
        int i = 0;
        for (int metaIndex = 0; meta.hasNext() && i < indexes.length; metaIndex++) {
            JsonNode node = meta.next();
            if (!node.isNull()) {
                String type = node.get("type").getTextValue();
                if (type.equals(element)) {
                    assertEquals("Expected " + element + " to be at indexes " + Arrays.toString(indexes) + ", but found it at " + metaIndex, indexes[i], metaIndex);
                    ++i;
                } else {
                    assertNotEquals("Expected " + element + " at index " + metaIndex + ", but found " + type, indexes[i], metaIndex);
                }
            }
        }
        return i == indexes.length;
    } catch (JsonParseException e) {
        return false;
    }
}
Also used : JsonNode(org.codehaus.jackson.JsonNode) JsonParseException(org.neo4j.server.rest.domain.JsonParseException)

Aggregations

JsonNode (org.codehaus.jackson.JsonNode)200 Test (org.junit.Test)55 ObjectMapper (org.codehaus.jackson.map.ObjectMapper)50 IOException (java.io.IOException)40 ArrayList (java.util.ArrayList)20 HashMap (java.util.HashMap)20 HTTP (org.neo4j.test.server.HTTP)18 Resource (com.netflix.simianarmy.Resource)17 AWSResource (com.netflix.simianarmy.aws.AWSResource)17 ObjectNode (org.codehaus.jackson.node.ObjectNode)15 Response (org.neo4j.test.server.HTTP.Response)12 Map (java.util.Map)9 ArrayNode (org.codehaus.jackson.node.ArrayNode)9 RpcException (cz.metacentrum.perun.core.api.exceptions.RpcException)8 ByteArrayOutputStream (java.io.ByteArrayOutputStream)8 JsonParseException (org.neo4j.server.rest.domain.JsonParseException)7 Date (java.util.Date)6 List (java.util.List)6 Description (org.hamcrest.Description)6 TypeSafeMatcher (org.hamcrest.TypeSafeMatcher)6