neo4j: Prevent accidental code injections in the tests
[nit.git] / tests / test_neo4j.nit
index 5575949..974a80a 100644 (file)
@@ -14,7 +14,8 @@
 
 import neo4j
 
-var key = get_time
+# key used to loosely assume unicity and prevent conflicting db accesses
+var key = "NIT_TESTING_ID".environ.to_i
 
 var srv = new Neo4jServer
 srv.start_quiet
@@ -24,6 +25,13 @@ print "# Test local\n"
 var client = new Neo4jClient("http://localhost:7474")
 assert client.is_ok
 
+# Clear the previous objects, if any
+client.cypher(
+       new CypherQuery.from_string(
+               "MATCH (n) WHERE n.key = \{key\} OPTIONAL MATCH n-[r]-() DELETE r, n"
+       ).set("key", key)
+)
+
 var andres = new NeoNode
 andres.labels.add_all(["PERSON", "MALE"])
 andres["name"] = "Andres"
@@ -119,8 +127,9 @@ print "{res5["name"].to_s} IS LOVED BY {res5.in_nodes("LOVES").first["name"].to_
 var query = (new CypherQuery).
        nmatch("(n: MALE)-[r: LOVES]->(m)").
        nwhere("n.name = 'Andres'").
-       nand("n.key = {key}").
-       nreturn("n, r, m")
+       nand("n.key = \{key\}").
+       nreturn("n, r, m").
+       set("key", key)
 var res7 = client.cypher(query)
-assert not res7.as(JsonObject)["data"].as(JsonArray).is_empty
+assert res7.as(JsonObject)["data"].as(JsonArray).length == 1