/* * Copyright (c) 2002-2017 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This file is part of Neo4j. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.neo4j.driver.internal; import org.junit.Test; import java.net.URI; import org.neo4j.driver.internal.net.BoltServerAddress; import org.neo4j.driver.v1.Driver; import org.neo4j.driver.v1.GraphDatabase; import org.neo4j.driver.v1.Record; import org.neo4j.driver.v1.Session; import org.neo4j.driver.v1.util.StubServer; import static org.hamcrest.Matchers.is; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import static org.neo4j.driver.internal.net.BoltServerAddress.LOCAL_DEFAULT; import static org.neo4j.driver.internal.util.Matchers.directDriverWithAddress; import static org.neo4j.driver.v1.Values.parameters; import static org.neo4j.driver.v1.util.StubServer.INSECURE_CONFIG; public class DirectDriverTest { @Test public void shouldUseDefaultPortIfMissing() { // Given URI uri = URI.create( "bolt://localhost" ); // When Driver driver = GraphDatabase.driver( uri ); // Then assertThat( driver, is( directDriverWithAddress( LOCAL_DEFAULT ) ) ); } @Test public void shouldAllowIPv6Address() { // Given URI uri = URI.create( "bolt://[::1]" ); BoltServerAddress address = BoltServerAddress.from( uri ); // When Driver driver = GraphDatabase.driver( uri ); // Then assertThat( driver, is( directDriverWithAddress( address ) ) ); } @Test public void shouldRejectInvalidAddress() { // Given URI uri = URI.create( "*" ); // When & Then try { Driver driver = GraphDatabase.driver( uri ); fail("Expecting error for wrong uri"); } catch( IllegalArgumentException e ) { assertThat( e.getMessage(), equalTo( "Invalid URI format `*`" ) ); } } @Test public void shouldRegisterSingleServer() { // Given URI uri = URI.create( "bolt://localhost:7687" ); BoltServerAddress address = BoltServerAddress.from( uri ); // When Driver driver = GraphDatabase.driver( uri ); // Then assertThat( driver, is( directDriverWithAddress( address ) ) ); } @Test public void shouldBeAbleRunCypher() throws Exception { // Given StubServer server = StubServer.start( "return_x.script", 9001 ); URI uri = URI.create( "bolt://127.0.0.1:9001" ); int x; // When try ( Driver driver = GraphDatabase.driver( uri, INSECURE_CONFIG ) ) { try ( Session session = driver.session() ) { Record record = session.run( "RETURN {x}", parameters( "x", 1 ) ).single(); x = record.get( 0 ).asInt(); } } // Then assertThat( x, equalTo( 1 ) ); // Finally assertThat( server.exitStatus(), equalTo( 0 ) ); } }