Skip to content

Commit 8272fde

Browse files
committed
Made fixes and added to integration test
Signed-off-by: S V <vats02581@gmail.com>
1 parent 77642d9 commit 8272fde

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

r2dbc-mysql/src/test/java/io/asyncer/r2dbc/mysql/RsaEncryptionIntegrationTest.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,50 @@
1919
import static org.assertj.core.api.Assertions.assertThat;
2020
import static org.junit.jupiter.api.Assertions.assertThrows;
2121

22+
import java.time.Duration;
23+
2224
import org.junit.Assume;
25+
import org.junit.jupiter.api.BeforeAll;
2326
import org.junit.jupiter.api.Test;
2427
import org.junit.jupiter.api.extension.ExtendWith;
2528

2629
import io.asyncer.r2dbc.mysql.constant.SslMode;
2730
import io.asyncer.r2dbc.mysql.internal.util.TestContainerExtension;
2831
import io.asyncer.r2dbc.mysql.internal.util.TestServerUtil;
2932
import io.r2dbc.spi.R2dbcPermissionDeniedException;
33+
import io.r2dbc.spi.ValidationDepth;
34+
import reactor.core.publisher.Mono;
35+
import reactor.test.StepVerifier;
3036

3137
@ExtendWith(TestContainerExtension.class)
3238
public class RsaEncryptionIntegrationTest {
39+
40+
@BeforeAll
41+
static void initCachingSha2Password() {
42+
// If the server uses caching_sha2_password, the first time a client connects to the server, the
43+
// server will require a native SSL connection. So all the SSL tunnel tests should be run after
44+
// the caching_sha2_password initialization.
45+
46+
MySqlConnectionConfiguration configuration = MySqlConnectionConfiguration.builder()
47+
.host(TestServerUtil.getHost())
48+
.port(TestServerUtil.getPort())
49+
.connectTimeout(Duration.ofSeconds(3))
50+
.user(TestServerUtil.getUsername())
51+
.password(TestServerUtil.getPassword())
52+
.database(TestServerUtil.getDatabase())
53+
.createDatabaseIfNotExist(true)
54+
.build();
55+
56+
MySqlConnectionFactory.from(configuration).create()
57+
.flatMap(connection -> connection.validate(ValidationDepth.REMOTE)
58+
.flatMap(it -> connection.close().then(Mono.just(it))))
59+
.as(StepVerifier::create)
60+
.expectNext(true)
61+
.verifyComplete();
62+
}
3363

3464
@Test
35-
void rsaEnabledSslDisabledTest() {
65+
void sslDisabledTest() {
3666
Assume.assumeTrue(TestServerUtil.getServerVersion().getMajor() >= 8);
3767

3868
MySqlConnectionConfiguration configuration = MySqlConnectionConfiguration.builder()
@@ -45,6 +75,11 @@ void rsaEnabledSslDisabledTest() {
4575
.build();
4676

4777
assertThrows(R2dbcPermissionDeniedException.class, () -> MySqlConnectionFactory.from(configuration));
78+
}
79+
80+
@Test
81+
void sslDisabledInvalidRsaConfig() {
82+
Assume.assumeTrue(TestServerUtil.getServerVersion().getMajor() >= 8);
4883

4984
MySqlConnectionConfiguration configuration2 = MySqlConnectionConfiguration.builder()
5085
.host("localhost")
@@ -57,6 +92,11 @@ void rsaEnabledSslDisabledTest() {
5792
.build();
5893

5994
assertThrows(IllegalArgumentException.class, () -> MySqlConnectionFactory.from(configuration2));
95+
}
96+
97+
@Test
98+
void sslDisabledValidRsaConfig() {
99+
Assume.assumeTrue(TestServerUtil.getServerVersion().getMajor() >= 8);
60100

61101
MySqlConnectionConfiguration configuration3 = MySqlConnectionConfiguration.builder()
62102
.host("localhost")
@@ -68,6 +108,6 @@ void rsaEnabledSslDisabledTest() {
68108
.serverRSAPublicKeyFile("/usr/local/mysql/data/public_key.pem")
69109
.build();
70110

71-
assertThat(MySqlConnectionFactory.from(configuration2)).isExactlyInstanceOf(MySqlConnectionFactory.class);
111+
assertThat(MySqlConnectionFactory.from(configuration3)).isExactlyInstanceOf(MySqlConnectionFactory.class);
72112
}
73113
}

0 commit comments

Comments
 (0)