Skip to content

Commit a619882

Browse files
committed
Merge pull request #152 from pontusmelke/1.0-unsupported-configuration
Don't rely on unsupported configuration
2 parents 2da541c + f7e5abc commit a619882

File tree

7 files changed

+48
-60
lines changed

7 files changed

+48
-60
lines changed

driver/src/test/java/org/neo4j/driver/v1/integration/CredentialsIT.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,9 @@
3434

3535
import static org.hamcrest.MatcherAssert.assertThat;
3636
import static org.hamcrest.Matchers.equalTo;
37-
3837
import static org.neo4j.driver.v1.AuthTokens.basic;
39-
import static org.neo4j.driver.v1.Values.parameters;
4038
import static org.neo4j.driver.v1.Values.ofValue;
39+
import static org.neo4j.driver.v1.Values.parameters;
4140

4241
public class CredentialsIT
4342
{
@@ -90,7 +89,7 @@ private void enableAuth( String password ) throws Exception
9089
{
9190
neo4j.restartServerOnEmptyDatabase( Neo4jSettings.DEFAULT
9291
.updateWith( Neo4jSettings.AUTH_ENABLED, "true" )
93-
.updateWith( Neo4jSettings.AUTH_FILE, tempDir.newFile( "auth" ).getAbsolutePath() ));
92+
.updateWith( Neo4jSettings.DATA_DIR, tempDir.getRoot().getAbsolutePath() ));
9493

9594
Driver setPassword = GraphDatabase.driver( neo4j.address(), new InternalAuthToken(
9695
parameters(

driver/src/test/java/org/neo4j/driver/v1/integration/TLSSocketChannelIT.java

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.junit.BeforeClass;
2222
import org.junit.Rule;
2323
import org.junit.Test;
24+
import org.junit.rules.TemporaryFolder;
2425

2526
import java.io.BufferedWriter;
2627
import java.io.File;
@@ -41,12 +42,10 @@
4142
import org.neo4j.driver.v1.GraphDatabase;
4243
import org.neo4j.driver.v1.StatementResult;
4344
import org.neo4j.driver.v1.util.CertificateToolTest;
44-
import org.neo4j.driver.v1.util.Neo4jInstaller;
4545
import org.neo4j.driver.v1.util.Neo4jRunner;
4646
import org.neo4j.driver.v1.util.Neo4jSettings;
4747
import org.neo4j.driver.v1.util.TestNeo4j;
4848

49-
import static java.io.File.createTempFile;
5049
import static org.junit.Assert.assertEquals;
5150
import static org.junit.Assert.assertFalse;
5251
import static org.junit.Assert.assertTrue;
@@ -60,6 +59,9 @@ public class TLSSocketChannelIT
6059
@Rule
6160
public TestNeo4j neo4j = new TestNeo4j();
6261

62+
@Rule
63+
public TemporaryFolder folder = new TemporaryFolder( );
64+
6365
@BeforeClass
6466
public static void setup() throws IOException, InterruptedException
6567
{
@@ -94,31 +96,24 @@ private void performTLSHandshakeUsingKnownCerts( File knownCerts ) throws Throwa
9496
verify( logger, atLeastOnce() ).debug( "TLS connection closed" );
9597
}
9698

97-
private File tempFile(String prefix, String suffix) throws Throwable
98-
{
99-
File file = createTempFile( prefix, suffix );
100-
file.deleteOnExit();
101-
return file;
102-
}
103-
10499
@Test
105100
public void shouldPerformTLSHandshakeWithTrustedCert() throws Throwable
106101
{
107102
try
108103
{
109104
// Given
110105
// Create root certificate
111-
File rootCert = tempFile( "temp_root_cert", ".cert" );
112-
File rootKey = tempFile( "temp_root_key", ".key" );
106+
File rootCert = folder.newFile( "temp_root_cert.cert" );
107+
File rootKey = folder.newFile( "temp_root_key.key" );
113108

114109
CertificateToolTest.SelfSignedCertificateGenerator
115110
certGenerator = new CertificateToolTest.SelfSignedCertificateGenerator();
116111
certGenerator.saveSelfSignedCertificate( rootCert );
117112
certGenerator.savePrivateKey( rootKey );
118113

119114
// Generate certificate signing request and get a certificate signed by the root private key
120-
File cert = tempFile( "temp_cert", ".cert" );
121-
File key = tempFile( "temp_key", ".key" );
115+
File cert = folder.newFile( "temp_cert.cert" );
116+
File key = folder.newFile( "temp_key.key" );
122117
CertificateToolTest.CertificateSigningRequestGenerator
123118
csrGenerator = new CertificateToolTest.CertificateSigningRequestGenerator();
124119
X509Certificate signedCert = certGenerator.sign(
@@ -127,9 +122,7 @@ public void shouldPerformTLSHandshakeWithTrustedCert() throws Throwable
127122
CertificateTool.saveX509Cert( signedCert, cert );
128123

129124
// Give the server certs to database
130-
neo4j.restartServerOnEmptyDatabase(
131-
Neo4jSettings.DEFAULT
132-
.usingEncryptionKeyAndCert( key, cert ) );
125+
neo4j.updateEncryptionKeyAndCert( key, cert );
133126

134127
Logger logger = mock( Logger.class );
135128
SocketChannel channel = SocketChannel.open();
@@ -208,10 +201,10 @@ private void createFakeServerCertPairInKnownCerts( String host, int port, File k
208201
public void shouldFailTLSHandshakeDueToServerCertNotSignedByKnownCA() throws Throwable
209202
{
210203
// Given
204+
neo4j.restartServerOnEmptyDatabase( Neo4jSettings.DEFAULT.updateWith( Neo4jSettings.CERT_DIR, folder.getRoot().getAbsolutePath() ) );
211205
SocketChannel channel = SocketChannel.open();
212206
channel.connect( new InetSocketAddress( "localhost", 7687 ) );
213-
File trustedCertFile = File.createTempFile( "neo4j_trusted_cert", ".tmp" );
214-
trustedCertFile.deleteOnExit();
207+
File trustedCertFile = folder.newFile( "neo4j_trusted_cert.tmp" );
215208
X509Certificate aRandomCert = CertificateToolTest.generateSelfSignedCertificate();
216209
CertificateTool.saveX509Cert( aRandomCert, trustedCertFile );
217210

@@ -249,7 +242,7 @@ public void shouldPerformTLSHandshakeWithTheSameTrustedServerCert() throws Throw
249242
// When
250243
TLSSocketChannel sslChannel = new TLSSocketChannel( "localhost", 7687, channel, logger,
251244
Config.TrustStrategy.trustSignedBy(
252-
new File( Neo4jInstaller.neo4jHomeDir, "conf/ssl/snakeoil.cert") ) );
245+
Neo4jSettings.DEFAULT_TLS_CERT_FILE ) );
253246
sslChannel.close();
254247

255248
// Then

driver/src/test/java/org/neo4j/driver/v1/tck/DriverComplianceIT.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020

2121
import cucumber.api.CucumberOptions;
2222
import org.junit.ClassRule;
23+
import org.junit.Rule;
24+
import org.junit.rules.TemporaryFolder;
2325
import org.junit.runner.RunWith;
2426

25-
import java.io.File;
2627
import java.io.IOException;
2728

28-
import org.neo4j.driver.v1.util.Neo4jSettings;
2929
import org.neo4j.driver.v1.util.TestNeo4j;
3030

3131
/**
@@ -35,21 +35,13 @@
3535
@CucumberOptions( features = {"target/resources/features"}, strict=true, tags={"~@in_dev", "~@db"}, format = {"pretty"})
3636
public class DriverComplianceIT
3737
{
38+
@Rule
39+
TemporaryFolder folder = new TemporaryFolder( );
40+
3841
@ClassRule
3942
public static TestNeo4j neo4j = new TestNeo4j();
4043

4144
public DriverComplianceIT() throws IOException
4245
{
4346
}
44-
45-
public static void updateEncryptionKeyAndCert( File key, File cert ) throws Exception
46-
{
47-
neo4j.restartServerOnEmptyDatabase(
48-
Neo4jSettings.DEFAULT.usingEncryptionKeyAndCert( key, cert ) );
49-
}
50-
51-
public static void useDefaultEncryptionKeyAndCert() throws Exception
52-
{
53-
neo4j.restartServerOnEmptyDatabase( Neo4jSettings.DEFAULT );
54-
}
5547
}

driver/src/test/java/org/neo4j/driver/v1/tck/DriverSecurityComplianceSteps.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
import org.neo4j.driver.v1.Config.EncryptionLevel;
3232
import org.neo4j.driver.v1.Driver;
3333
import org.neo4j.driver.v1.GraphDatabase;
34-
import org.neo4j.driver.v1.StatementResult;
3534
import org.neo4j.driver.v1.Session;
35+
import org.neo4j.driver.v1.StatementResult;
3636
import org.neo4j.driver.v1.exceptions.ClientException;
3737
import org.neo4j.driver.v1.util.CertificateToolTest.CertificateSigningRequestGenerator;
3838
import org.neo4j.driver.v1.util.CertificateToolTest.SelfSignedCertificateGenerator;
@@ -48,8 +48,7 @@
4848
import static org.neo4j.driver.internal.util.CertificateTool.saveX509Cert;
4949
import static org.neo4j.driver.v1.Config.TrustStrategy.trustOnFirstUse;
5050
import static org.neo4j.driver.v1.Config.TrustStrategy.trustSignedBy;
51-
import static org.neo4j.driver.v1.tck.DriverComplianceIT.updateEncryptionKeyAndCert;
52-
import static org.neo4j.driver.v1.tck.DriverComplianceIT.useDefaultEncryptionKeyAndCert;
51+
import static org.neo4j.driver.v1.tck.DriverComplianceIT.neo4j;
5352
import static org.neo4j.driver.v1.util.CertificateToolTest.generateSelfSignedCertificate;
5453

5554
public class DriverSecurityComplianceSteps
@@ -117,7 +116,7 @@ public void theDatabaseHasChangedWhichCertificateItUses() throws Throwable
117116
generator.saveSelfSignedCertificate( cert );
118117
generator.savePrivateKey( key );
119118

120-
updateEncryptionKeyAndCert( key, cert );
119+
neo4j.updateEncryptionKeyAndCert( key, cert );
121120

122121
}
123122

@@ -211,7 +210,7 @@ public void aRunningNeo4jDatabaseUsingACertificateSignedByTheSameTrustedCertific
211210
csrGenerator.savePrivateKey( key );
212211
saveX509Cert( signedCert, cert );
213212

214-
updateEncryptionKeyAndCert( key, cert );
213+
neo4j.updateEncryptionKeyAndCert( key, cert );
215214
}
216215

217216
@When( "^I connect via a TLS-enabled transport$" )
@@ -269,7 +268,7 @@ public void clearAfterEachScenario() throws Throwable
269268
@After("@modifies_db_config")
270269
public void resetDbWithDefaultSettings() throws Throwable
271270
{
272-
useDefaultEncryptionKeyAndCert();
271+
neo4j.useDefaultEncryptionKeyAndCert();
273272
}
274273

275274
private File tempFile(String prefix, String suffix) throws Throwable

driver/src/test/java/org/neo4j/driver/v1/util/Neo4jInstaller.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
*/
1919
package org.neo4j.driver.v1.util;
2020

21+
import org.rauschig.jarchivelib.Archiver;
22+
2123
import java.io.File;
2224
import java.io.IOException;
2325
import java.util.Map;
2426

25-
import org.rauschig.jarchivelib.Archiver;
26-
2727
import static org.neo4j.driver.v1.util.FileTools.extractTarball;
2828
import static org.neo4j.driver.v1.util.FileTools.streamFileTo;
2929

@@ -49,7 +49,7 @@ public static boolean isWindows()
4949
public static final File neo4jDir = new File( "../target/neo4j" );
5050

5151
public static final File neo4jHomeDir = new File( neo4jDir, version );
52-
public static final File dbDir = new File( neo4jHomeDir, "data/graph.db" );
52+
public static final File dbDir = new File( neo4jHomeDir, "data/databases/graph.db" );
5353

5454
/**
5555
* download, untar/unzip

driver/src/test/java/org/neo4j/driver/v1/util/Neo4jSettings.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,21 @@
2727
public class Neo4jSettings
2828
{
2929
public static final String AUTH_ENABLED = "dbms.security.auth_enabled";
30-
public static final String AUTH_FILE = "unsupported.dbms.security.auth_store.location";
30+
public static final String DATA_DIR = "dbms.directories.data";
31+
public static final String CERT_DIR = "dbms.directories.certificates";
3132

32-
private static final String TLS_CERT_KEY = "dbms.security.tls_certificate_file";
33-
private static final String TLS_KEY_KEY = "dbms.security.tls_key_file";
34-
35-
private static final String DEFAULT_TLS_CERT_PATH = "conf/ssl/snakeoil.cert";
36-
private static final String DEFAULT_TLS_KEY_PATH = "conf/ssl/snakeoil.key";
33+
private static final String DEFAULT_CERT_DIR = "certificates";
34+
private static final String DEFAULT_TLS_CERT_PATH = DEFAULT_CERT_DIR + "/neo4j.cert";
35+
private static final String DEFAULT_TLS_KEY_PATH = DEFAULT_CERT_DIR + "/neo4j.key";
3736

37+
public static final File DEFAULT_TLS_KEY_FILE = new File( Neo4jInstaller.neo4jHomeDir, DEFAULT_TLS_KEY_PATH );
3838
public static final File DEFAULT_TLS_CERT_FILE = new File( Neo4jInstaller.neo4jHomeDir, DEFAULT_TLS_CERT_PATH );
3939

4040

4141
private final Map<String, String> settings;
4242

4343
public static Neo4jSettings DEFAULT = new Neo4jSettings( map(
44-
TLS_CERT_KEY, DEFAULT_TLS_CERT_PATH,
45-
TLS_KEY_KEY, DEFAULT_TLS_KEY_PATH,
44+
CERT_DIR, DEFAULT_CERT_DIR,
4645
AUTH_ENABLED, "false" ) );
4746

4847
private Neo4jSettings( Map<String, String> settings )
@@ -86,14 +85,6 @@ public boolean equals( Object o )
8685
return settings.equals( that.settings );
8786
}
8887

89-
public Neo4jSettings usingEncryptionKeyAndCert( File key, File cert )
90-
{
91-
return updateWith( map(
92-
TLS_CERT_KEY, cert.getAbsolutePath().replaceAll("\\\\", "/"),
93-
TLS_KEY_KEY, key.getAbsolutePath().replaceAll("\\\\", "/")
94-
));
95-
}
96-
9788
@Override
9889
public int hashCode()
9990
{

driver/src/test/java/org/neo4j/driver/v1/util/TestNeo4j.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import java.io.IOException;
2727
import java.io.PrintWriter;
2828
import java.net.URL;
29+
import java.nio.file.Files;
30+
import java.nio.file.StandardCopyOption;
2931

3032
import org.neo4j.driver.v1.Driver;
3133
import org.neo4j.driver.v1.Session;
@@ -102,4 +104,16 @@ public TestNeo4j withSettings( Neo4jSettings settings )
102104
this.settings = settings;
103105
return this;
104106
}
107+
108+
public void updateEncryptionKeyAndCert( File key, File cert ) throws Exception
109+
{
110+
Files.copy( key.toPath(), Neo4jSettings.DEFAULT_TLS_KEY_FILE.toPath(), StandardCopyOption.REPLACE_EXISTING );
111+
Files.copy( cert.toPath(), Neo4jSettings.DEFAULT_TLS_CERT_FILE.toPath(), StandardCopyOption.REPLACE_EXISTING );
112+
restartServerOnEmptyDatabase( Neo4jSettings.DEFAULT );
113+
}
114+
115+
public void useDefaultEncryptionKeyAndCert() throws Exception
116+
{
117+
restartServerOnEmptyDatabase( Neo4jSettings.DEFAULT );
118+
}
105119
}

0 commit comments

Comments
 (0)