Skip to content

Commit affee6c

Browse files
#5032 - MS SQL Server disable encrypt by default (#5033)
This disables the JDBC driver encrypt option by default for MS SQL Server container connections. Since release 10.1.0 of the MS JDBC driver, the encrypt option is enabled by default (see https://github.com/microsoft/mssql-jdbc/releases/tag/v10.1.0). To be able to use the container without having to manually add params the encrypt option will be switched off if it is not set. Signed-off-by: Decker, Stefan <[email protected]> Co-authored-by: Kevin Wittek <[email protected]>
1 parent 720c2ea commit affee6c

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

modules/mssqlserver/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ dependencies {
1010
compileOnly 'io.r2dbc:r2dbc-mssql:0.8.7.RELEASE'
1111

1212
testImplementation project(':jdbc-test')
13-
testImplementation 'com.microsoft.sqlserver:mssql-jdbc:9.5.0.jre8-preview'
13+
testImplementation 'com.microsoft.sqlserver:mssql-jdbc:10.2.0.jre8'
1414

1515
testImplementation project(':r2dbc')
1616
testImplementation 'io.r2dbc:r2dbc-mssql:0.8.7.RELEASE'
1717

1818
// MSSQL's wait strategy requires the JDBC driver
1919
testImplementation testFixtures(project(':r2dbc'))
20-
testImplementation 'com.microsoft.sqlserver:mssql-jdbc:9.5.0.jre8-preview'
2120
}

modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,17 @@ public String getDriverClassName() {
9191
return "com.microsoft.sqlserver.jdbc.SQLServerDriver";
9292
}
9393

94+
@Override
95+
protected String constructUrlForConnection(String queryString) {
96+
// The JDBC driver of MS SQL Server enables encryption by default for versions > 10.1.0.
97+
// We need to disable it by default to be able to use the container without having to pass extra params.
98+
// See https://github.com/microsoft/mssql-jdbc/releases/tag/v10.1.0
99+
if (urlParameters.keySet().stream().map(String::toLowerCase).noneMatch("encrypt"::equals)) {
100+
urlParameters.put("encrypt", "false");
101+
}
102+
return super.constructUrlForConnection(queryString);
103+
}
104+
94105
@Override
95106
public String getJdbcUrl() {
96107
String additionalUrlParams = constructUrlParameters(";", ";");

modules/mssqlserver/src/test/java/org/testcontainers/junit/mssqlserver/SimpleMSSQLServerTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.testcontainers.junit.mssqlserver;
22

33
import org.junit.Test;
4-
import org.testcontainers.MSSQLServerTestImages;
54
import org.testcontainers.containers.MSSQLServerContainer;
65
import org.testcontainers.db.AbstractContainerDatabaseTest;
76

@@ -11,7 +10,7 @@
1110
import java.sql.Statement;
1211

1312
import static org.hamcrest.CoreMatchers.containsString;
14-
import static org.junit.Assert.assertThat;
13+
import static org.hamcrest.MatcherAssert.assertThat;
1514
import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
1615
import static org.testcontainers.MSSQLServerTestImages.MSSQL_SERVER_IMAGE;
1716

0 commit comments

Comments
 (0)