1515import software .amazon .awssdk .services .dynamodb .model .KeyType ;
1616import software .amazon .awssdk .services .dynamodb .model .ScalarAttributeType ;
1717
18+ import javax .net .ssl .KeyManagerFactory ;
19+ import javax .net .ssl .SSLContext ;
20+ import javax .net .ssl .TrustManagerFactory ;
21+ import java .io .IOException ;
1822import java .net .URI ;
23+ import java .nio .file .Files ;
24+ import java .nio .file .Paths ;
25+ import java .security .KeyManagementException ;
26+ import java .security .KeyStore ;
27+ import java .security .KeyStoreException ;
28+ import java .security .NoSuchAlgorithmException ;
29+ import java .security .UnrecoverableKeyException ;
30+ import java .security .cert .CertificateException ;
1931
2032import static org .assertj .core .api .Assertions .assertThat ;
2133import static org .assertj .core .api .Assertions .assertThatThrownBy ;
2234
2335public class ScyllaDBContainerTest {
2436
25- private static final DockerImageName SCYLLADB_IMAGE = DockerImageName .parse ("scylladb/scylla:5.2.9 " );
37+ private static final DockerImageName SCYLLADB_IMAGE = DockerImageName .parse ("scylladb/scylla:6.2 " );
2638
2739 private static final String BASIC_QUERY = "SELECT release_version FROM system.local" ;
2840
2941 @ Test
3042 public void testSimple () {
3143 try ( // container {
32- ScyllaDBContainer scylladb = new ScyllaDBContainer ("scylladb/scylla:5.2.9" )
33- // }
44+ ScyllaDBContainer scylladb = new ScyllaDBContainer (SCYLLADB_IMAGE )
45+ // }
3446 ) {
3547 scylladb .start ();
3648 // session {
@@ -47,6 +59,49 @@ public void testSimple() {
4759 }
4860 }
4961
62+ @ Test
63+ public void testSimpleSsl () throws NoSuchAlgorithmException , KeyStoreException , IOException , CertificateException , UnrecoverableKeyException , KeyManagementException {
64+ try (
65+ // custom_configuration {
66+ ScyllaDBContainer scylladb = new ScyllaDBContainer (SCYLLADB_IMAGE )
67+ .withConfigurationOverride ("scylla-test-ssl" )
68+ // }
69+ ) {
70+
71+ // sslContext {
72+ String testResourcesDir = getClass ().getClassLoader ().getResource ("scylla-test-ssl/" ).getPath ();
73+
74+ KeyStore keyStore = KeyStore .getInstance ("PKCS12" );
75+ keyStore .load (Files .newInputStream (Paths .get (testResourcesDir + "keystore.node0" )), "scylla" .toCharArray ());
76+
77+ KeyStore trustStore = KeyStore .getInstance ("PKCS12" );
78+ trustStore .load (Files .newInputStream (Paths .get (testResourcesDir + "truststore.node0" )), "scylla" .toCharArray ());
79+
80+ KeyManagerFactory keyManagerFactory = KeyManagerFactory .getInstance (KeyManagerFactory .getDefaultAlgorithm ());
81+ keyManagerFactory .init (keyStore , "scylla" .toCharArray ());
82+
83+ TrustManagerFactory trustManagerFactory = TrustManagerFactory .getInstance (TrustManagerFactory .getDefaultAlgorithm ());
84+ trustManagerFactory .init (trustStore );
85+
86+ SSLContext sslContext = SSLContext .getInstance ("TLS" );
87+ sslContext .init (keyManagerFactory .getKeyManagers (), trustManagerFactory .getTrustManagers (), null );
88+ // }
89+
90+ scylladb .start ();
91+
92+ CqlSession session = CqlSession
93+ .builder ()
94+ .addContactPoint (scylladb .getContactPoint ())
95+ .withLocalDatacenter ("datacenter1" )
96+ .withSslContext (sslContext )
97+ .build ();
98+ ResultSet resultSet = session .execute (BASIC_QUERY );
99+ assertThat (resultSet .wasApplied ()).isTrue ();
100+ assertThat (resultSet .one ().getString (0 )).isNotNull ();
101+ assertThat (session .getMetadata ().getNodes ().values ()).hasSize (1 );
102+ }
103+ }
104+
50105 @ Test
51106 public void testShardAwareness () {
52107 try (ScyllaDBContainer scylladb = new ScyllaDBContainer (SCYLLADB_IMAGE )) {
@@ -67,8 +122,8 @@ public void testShardAwareness() {
67122 @ Test
68123 public void testAlternator () {
69124 try ( // alternator {
70- ScyllaDBContainer scylladb = new ScyllaDBContainer (SCYLLADB_IMAGE ).withAlternator ()
71- // }
125+ ScyllaDBContainer scylladb = new ScyllaDBContainer (SCYLLADB_IMAGE ).withAlternator ()
126+ // }
72127 ) {
73128 scylladb .start ();
74129
@@ -104,4 +159,15 @@ public void throwExceptionWhenAlternatorDisabled() {
104159 .hasMessageContaining ("Alternator is not enabled" );
105160 }
106161 }
162+
163+ @ Test
164+ public void testSslConfiguration () {
165+ try (ScyllaDBContainer scylladb = new ScyllaDBContainer (SCYLLADB_IMAGE )) {
166+ scylladb .start ();
167+ assertThat (scylladb .getEnvMap ().get ("SCYLLA_SSL" )).isEqualTo ("1" );
168+ assertThat (scylladb .getEnvMap ().get ("SCYLLA_SSL_CERT_FILE" )).isEqualTo ("/etc/scylla/certs/scylla.crt" );
169+ assertThat (scylladb .getEnvMap ().get ("SCYLLA_SSL_KEY_FILE" )).isEqualTo ("/etc/scylla/certs/scylla.key" );
170+ assertThat (scylladb .getEnvMap ().get ("SCYLLA_SSL_CA_FILE" )).isEqualTo ("/etc/scylla/certs/ca.crt" );
171+ }
172+ }
107173}
0 commit comments