From a89705bd69f3701b58a47ddca7e88cd159846664 Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Tue, 11 Feb 2025 13:14:02 +0530 Subject: [PATCH 01/10] Add test for testManagedIdentityWithEncryptStrict --- .../sqlserver/jdbc/fedauth/FedauthTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java index 436ca8e17..07ee672c9 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java @@ -505,6 +505,19 @@ public void testAccessTokenCache() { } + @Test + public void testManagedIdentityWithEncryptStrict() throws SQLException { + String url = "jdbc:sqlserver://" + azureServer + ";database=" + azureDatabase + ";authentication=ActiveDirectoryMSI;encrypt=strict;"; + SQLServerDataSource ds = new SQLServerDataSource(); + ds.setURL(url); + + try (Connection conn = ds.getConnection()) { + fail("Expected connection to fail with encrypt=strict"); + } catch (SQLException e) { + assertTrue(e.getMessage().contains("SSL"), "Expected SSL error."); + } + } + private static void validateException(String url, String resourceKey) { try (Connection conn = DriverManager.getConnection(url)) { fail(TestResource.getResource("R_expectedFailPassed")); From c830543bd101624924aefb6808649ad26348910f Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Tue, 11 Feb 2025 13:33:11 +0530 Subject: [PATCH 02/10] Updated the test case --- .../com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java index 07ee672c9..47c0755f7 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java @@ -512,9 +512,9 @@ public void testManagedIdentityWithEncryptStrict() throws SQLException { ds.setURL(url); try (Connection conn = ds.getConnection()) { - fail("Expected connection to fail with encrypt=strict"); + assertNotNull(conn); } catch (SQLException e) { - assertTrue(e.getMessage().contains("SSL"), "Expected SSL error."); + fail("Expected connection to succeed with encrypt=strict, but it failed with error: " + e.getMessage()); } } From 6a12501aa6a177c3f2c3dcdc21b2e01f06c3e09f Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Tue, 11 Feb 2025 17:16:48 +0530 Subject: [PATCH 03/10] Add tag xAzureSQLDB --- .../sqlserver/jdbc/SQLServerConnectionTest.java | 16 ++++++++++++++++ .../sqlserver/jdbc/fedauth/FedauthTest.java | 13 ------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index 787c8151e..9a154bc48 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -5,6 +5,7 @@ package com.microsoft.sqlserver.jdbc; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; @@ -1370,4 +1371,19 @@ public void testGetSqlFedAuthTokenFailureNagativeWaiting() throws SQLException { } } + @Test + @Tag(Constants.xAzureSQLDB) + public void testManagedIdentityWithEncryptStrict() { + SQLServerDataSource ds = new SQLServerDataSource(); + ds.setURL(connectionString); + ds.setAuthentication("ActiveDirectoryMSI"); + ds.setEncrypt("strict"); + + try (Connection con = ds.getConnection()) { + assertTrue(con.isValid(0), "Connection should be valid"); + } catch (SQLException e) { + fail("Connection failed: " + e.getMessage()); + } + } + } diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java index 47c0755f7..436ca8e17 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/fedauth/FedauthTest.java @@ -505,19 +505,6 @@ public void testAccessTokenCache() { } - @Test - public void testManagedIdentityWithEncryptStrict() throws SQLException { - String url = "jdbc:sqlserver://" + azureServer + ";database=" + azureDatabase + ";authentication=ActiveDirectoryMSI;encrypt=strict;"; - SQLServerDataSource ds = new SQLServerDataSource(); - ds.setURL(url); - - try (Connection conn = ds.getConnection()) { - assertNotNull(conn); - } catch (SQLException e) { - fail("Expected connection to succeed with encrypt=strict, but it failed with error: " + e.getMessage()); - } - } - private static void validateException(String url, String resourceKey) { try (Connection conn = DriverManager.getConnection(url)) { fail(TestResource.getResource("R_expectedFailPassed")); From 41aaa7d106d92bc7cb6f1cc5e743700439dfa126 Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Tue, 11 Feb 2025 17:19:15 +0530 Subject: [PATCH 04/10] Update --- .../com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index 9a154bc48..edc01f03e 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -1380,7 +1380,7 @@ public void testManagedIdentityWithEncryptStrict() { ds.setEncrypt("strict"); try (Connection con = ds.getConnection()) { - assertTrue(con.isValid(0), "Connection should be valid"); + assertNotNull(con); } catch (SQLException e) { fail("Connection failed: " + e.getMessage()); } From ece20a9d2c73b3e8a5bc524f269972439c54598e Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Tue, 11 Feb 2025 18:33:51 +0530 Subject: [PATCH 05/10] Updated test --- .../microsoft/sqlserver/jdbc/SQLServerConnectionTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index edc01f03e..b9b7a9a84 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -1375,9 +1375,14 @@ public void testGetSqlFedAuthTokenFailureNagativeWaiting() throws SQLException { @Tag(Constants.xAzureSQLDB) public void testManagedIdentityWithEncryptStrict() { SQLServerDataSource ds = new SQLServerDataSource(); - ds.setURL(connectionString); + + String connectionUrl = TestUtils.removeProperty(TestUtils.removeProperty(connectionString, "user"), + "password"); + + ds.setURL(connectionUrl); ds.setAuthentication("ActiveDirectoryMSI"); ds.setEncrypt("strict"); + ds.setTrustServerCertificate(true); // Add this line try (Connection con = ds.getConnection()) { assertNotNull(con); From a7c850af11c0591a7f64c01ba1508eb4b86125a0 Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Tue, 11 Feb 2025 18:35:29 +0530 Subject: [PATCH 06/10] Updated test case --- .../sqlserver/jdbc/SQLServerConnectionTest.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index b9b7a9a84..5d1cd8fc2 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -1370,25 +1370,23 @@ public void testGetSqlFedAuthTokenFailureNagativeWaiting() throws SQLException { assertTrue(e.getMessage().contains(SQLServerException.getErrString("R_connectionTimedOut")), "Expected Timeout Exception was not thrown"); } } - + @Test @Tag(Constants.xAzureSQLDB) public void testManagedIdentityWithEncryptStrict() { SQLServerDataSource ds = new SQLServerDataSource(); - String connectionUrl = TestUtils.removeProperty(TestUtils.removeProperty(connectionString, "user"), - "password"); + String connectionUrl = TestUtils.removeProperty(connectionString, "user"); + connectionUrl = TestUtils.removeProperty(connectionUrl, "password"); ds.setURL(connectionUrl); ds.setAuthentication("ActiveDirectoryMSI"); ds.setEncrypt("strict"); - ds.setTrustServerCertificate(true); // Add this line try (Connection con = ds.getConnection()) { assertNotNull(con); } catch (SQLException e) { fail("Connection failed: " + e.getMessage()); } - } - + } } From 9797f8b157d6143998b3b50bf74184ac840385ec Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Wed, 12 Feb 2025 13:37:29 +0530 Subject: [PATCH 07/10] Add setTrustServerCertificate=true --- .../com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index 5d1cd8fc2..6661a058d 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -1382,6 +1382,7 @@ public void testManagedIdentityWithEncryptStrict() { ds.setURL(connectionUrl); ds.setAuthentication("ActiveDirectoryMSI"); ds.setEncrypt("strict"); + ds.setTrustServerCertificate(true); try (Connection con = ds.getConnection()) { assertNotNull(con); From 6ed14518eb1ef2d2191668a5af5f794ba6205235 Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Wed, 12 Feb 2025 14:27:39 +0530 Subject: [PATCH 08/10] Add HostNameInCertificate --- .../com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index 6661a058d..e1ec46d24 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -1382,7 +1382,7 @@ public void testManagedIdentityWithEncryptStrict() { ds.setURL(connectionUrl); ds.setAuthentication("ActiveDirectoryMSI"); ds.setEncrypt("strict"); - ds.setTrustServerCertificate(true); + ds.setHostNameInCertificate("*.database.windows.net"); try (Connection con = ds.getConnection()) { assertNotNull(con); From 69851f72432dd6e9753a03d0f1e643804980961f Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Wed, 12 Feb 2025 18:15:15 +0530 Subject: [PATCH 09/10] Add tags --- .../microsoft/sqlserver/jdbc/SQLServerConnectionTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index e1ec46d24..63811b7cd 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -1372,7 +1372,13 @@ public void testGetSqlFedAuthTokenFailureNagativeWaiting() throws SQLException { } @Test - @Tag(Constants.xAzureSQLDB) + @Tag(Constants.xAzureSQLDW) + @Tag(Constants.xAzureSQLMI) + @Tag(Constants.xSQLv11) + @Tag(Constants.xSQLv12) + @Tag(Constants.xSQLv14) + @Tag(Constants.xSQLv15) + @Tag(Constants.xSQLv16) public void testManagedIdentityWithEncryptStrict() { SQLServerDataSource ds = new SQLServerDataSource(); From bc8b65ba65d082c2d8032fe18fd8bba456112dcf Mon Sep 17 00:00:00 2001 From: Muskan Gupta Date: Thu, 13 Feb 2025 12:56:00 +0530 Subject: [PATCH 10/10] Resolve indexOutOfBound issue --- .../sqlserver/jdbc/SQLServerConnectionTest.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java index 63811b7cd..3cba6c6a5 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/SQLServerConnectionTest.java @@ -1382,8 +1382,13 @@ public void testGetSqlFedAuthTokenFailureNagativeWaiting() throws SQLException { public void testManagedIdentityWithEncryptStrict() { SQLServerDataSource ds = new SQLServerDataSource(); - String connectionUrl = TestUtils.removeProperty(connectionString, "user"); - connectionUrl = TestUtils.removeProperty(connectionUrl, "password"); + String connectionUrl = connectionString; + if (connectionUrl.contains("user=")) { + connectionUrl = TestUtils.removeProperty(connectionUrl, "user"); + } + if (connectionUrl.contains("password=")) { + connectionUrl = TestUtils.removeProperty(connectionUrl, "password"); + } ds.setURL(connectionUrl); ds.setAuthentication("ActiveDirectoryMSI");