From 83da945200f75c876d16f9ee2bc55d3cb857b4eb Mon Sep 17 00:00:00 2001 From: ulixius9 Date: Tue, 7 Apr 2026 15:30:12 +0530 Subject: [PATCH 1/2] fix matillion test connection --- ingestion/src/metadata/utils/ssl_manager.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ingestion/src/metadata/utils/ssl_manager.py b/ingestion/src/metadata/utils/ssl_manager.py index ce2720050f11..feada5f8eb26 100644 --- a/ingestion/src/metadata/utils/ssl_manager.py +++ b/ingestion/src/metadata/utils/ssl_manager.py @@ -153,6 +153,7 @@ def _(self, connection): matillion_connection = cast(MatillionConnection, connection) if ( matillion_connection.connection + and hasattr(matillion_connection.connection, "sslConfig") and matillion_connection.connection.sslConfig ): if matillion_connection.connection.sslConfig.root.caCertificate: @@ -351,7 +352,9 @@ def check_ssl_and_init( @check_ssl_and_init.register(MatillionConnection) def _(connection) -> Union[SSLManager, None]: service_connection = cast(MatillionConnection, connection) - if service_connection.connection: + if service_connection.connection and hasattr( + service_connection.connection, "sslConfig" + ): ssl: Optional[ verifySSLConfig.SslConfig ] = service_connection.connection.sslConfig From d83b5d6065ce8a66c94bd6bf08996980e1b4a795 Mon Sep 17 00:00:00 2001 From: ulixius9 Date: Tue, 7 Apr 2026 15:46:58 +0530 Subject: [PATCH 2/2] add unit tests --- ingestion/tests/unit/test_ssl_manager.py | 98 ++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/ingestion/tests/unit/test_ssl_manager.py b/ingestion/tests/unit/test_ssl_manager.py index da0fb684873f..d6d147142d70 100644 --- a/ingestion/tests/unit/test_ssl_manager.py +++ b/ingestion/tests/unit/test_ssl_manager.py @@ -212,6 +212,104 @@ def test_init(self, get_connection, test_connection, setup_ssl): ) +class MatillionSSLManagerTest(TestCase): + """ + Tests for Matillion SSL Manager with DPC auth variant (no sslConfig) + """ + + def test_check_ssl_and_init_dpc_connection_returns_none(self): + from metadata.generated.schema.entity.services.connections.pipeline.matillionConnection import ( + MatillionConnection, + ) + from metadata.utils.ssl_manager import check_ssl_and_init + + connection = MatillionConnection( + connection={ + "type": "MatillionDPC", + "clientId": "test-client", + "clientSecret": "test-secret", + "region": "us1", + } + ) + + result = check_ssl_and_init(connection) + + self.assertIsNone(result) + + def test_setup_ssl_dpc_connection_returns_connection_unchanged(self): + from metadata.generated.schema.entity.services.connections.pipeline.matillionConnection import ( + MatillionConnection, + ) + + connection = MatillionConnection( + connection={ + "type": "MatillionDPC", + "clientId": "test-client", + "clientSecret": "test-secret", + "region": "us1", + } + ) + + ssl_manager = SSLManager() + result = ssl_manager.setup_ssl(connection) + + self.assertIs(result, connection) + + def test_check_ssl_and_init_etl_connection_with_ssl(self): + from metadata.generated.schema.entity.services.connections.pipeline.matillionConnection import ( + MatillionConnection, + ) + from metadata.utils.ssl_manager import check_ssl_and_init + + connection = MatillionConnection( + connection={ + "type": "MatillionETL", + "hostPort": "https://matillion.example.com", + "username": "admin", + "password": "password", + "sslConfig": {"caCertificate": "caCertificateData"}, + } + ) + + ssl_manager = check_ssl_and_init(connection) + + self.assertIsNotNone(ssl_manager) + self.assertIsNotNone(ssl_manager.ca_file_path) + + ssl_manager.cleanup_temp_files() + + def test_check_ssl_and_init_etl_connection_without_ssl(self): + from metadata.generated.schema.entity.services.connections.pipeline.matillionConnection import ( + MatillionConnection, + ) + from metadata.utils.ssl_manager import check_ssl_and_init + + connection = MatillionConnection( + connection={ + "type": "MatillionETL", + "hostPort": "https://matillion.example.com", + "username": "admin", + "password": "password", + } + ) + + result = check_ssl_and_init(connection) + + self.assertIsNone(result) + + def test_check_ssl_and_init_no_connection_returns_none(self): + from metadata.generated.schema.entity.services.connections.pipeline.matillionConnection import ( + MatillionConnection, + ) + from metadata.utils.ssl_manager import check_ssl_and_init + + connection = MatillionConnection() + + result = check_ssl_and_init(connection) + + self.assertIsNone(result) + + class MssqlSSLManagerTest(TestCase): """ Tests for MSSQL SSL Manager functionality