From 88c7ccee0cdc1476c931888c20bca11da4efeddc Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Thu, 10 Jul 2025 10:39:28 +0300 Subject: [PATCH] [#3927] fixed TLS unit tests --- .../tests/mysql_host_data_source_unittest.cc | 16 ++++++++++++++++ .../mysql/tests/mysql_lease_mgr_unittest.cc | 16 ++++++++++++++++ .../tests/pgsql_host_data_source_unittest.cc | 17 ++++++++++++++--- .../pgsql/tests/pgsql_lease_mgr_unittest.cc | 17 ++++++++++++++--- 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/src/hooks/dhcp/mysql/tests/mysql_host_data_source_unittest.cc b/src/hooks/dhcp/mysql/tests/mysql_host_data_source_unittest.cc index 7acb28f430..93a8d879e6 100644 --- a/src/hooks/dhcp/mysql/tests/mysql_host_data_source_unittest.cc +++ b/src/hooks/dhcp/mysql/tests/mysql_host_data_source_unittest.cc @@ -42,6 +42,15 @@ using namespace std; namespace { +/// @brief Check if SSL/TLS support is available and configured. +bool hasMySQLTls() { + std::string tls = getMySQLTlsEnv(); + if (tls.empty()) { + tls = getMySQLTlsServer(); + } + return (tls == "YES"); +} + class MySqlHostDataSourceTest : public GenericHostDataSourceTest { public: /// @brief Clears the database and opens connection to it. @@ -246,6 +255,13 @@ TEST(MySqlHostDataSource, OpenDatabase) { MYSQL_VALID_TYPE, NULL, VALID_HOST, INVALID_USER, VALID_PASSWORD)), NoDatabaseName); + // Check for SSL/TLS support. + if (hasMySQLTls()) { + EXPECT_NO_THROW(HostMgr::addBackend(connectionString( + MYSQL_VALID_TYPE, VALID_NAME, VALID_HOST_TCP, VALID_SECURE_USER, + VALID_PASSWORD, 0, 0, VALID_CERT, VALID_KEY, VALID_CA, VALID_CIPHER))); + } + // Tidy up after the test destroyMySQLSchema(); } diff --git a/src/hooks/dhcp/mysql/tests/mysql_lease_mgr_unittest.cc b/src/hooks/dhcp/mysql/tests/mysql_lease_mgr_unittest.cc index 2739ef3c35..7379849fe7 100644 --- a/src/hooks/dhcp/mysql/tests/mysql_lease_mgr_unittest.cc +++ b/src/hooks/dhcp/mysql/tests/mysql_lease_mgr_unittest.cc @@ -40,6 +40,15 @@ using namespace std; namespace { +/// @brief Check if SSL/TLS support is available and configured. +bool hasMySQLTls() { + std::string tls = getMySQLTlsEnv(); + if (tls.empty()) { + tls = getMySQLTlsServer(); + } + return (tls == "YES"); +} + /// @brief Test fixture class for testing MySQL Lease Manager /// /// Opens the database prior to each test and closes it afterwards. @@ -206,6 +215,13 @@ TEST(MySqlOpenTest, OpenDatabase) { MYSQL_VALID_TYPE, NULL, VALID_HOST, VALID_USER, VALID_PASSWORD)), NoDatabaseName); + // Check for SSL/TLS support. + if (hasMySQLTls()) { + EXPECT_NO_THROW(LeaseMgrFactory::create(connectionString( + MYSQL_VALID_TYPE, VALID_NAME, VALID_HOST_TCP, VALID_SECURE_USER, + VALID_PASSWORD, 0, 0, VALID_CERT, VALID_KEY, VALID_CA, VALID_CIPHER))); + } + // Check for extended info tables. const char* EX_INFO = "extended-info-tables=true"; EXPECT_NO_THROW(LeaseMgrFactory::create(connectionString( diff --git a/src/hooks/dhcp/pgsql/tests/pgsql_host_data_source_unittest.cc b/src/hooks/dhcp/pgsql/tests/pgsql_host_data_source_unittest.cc index 74ab4f044d..449bbc9079 100644 --- a/src/hooks/dhcp/pgsql/tests/pgsql_host_data_source_unittest.cc +++ b/src/hooks/dhcp/pgsql/tests/pgsql_host_data_source_unittest.cc @@ -42,6 +42,15 @@ using namespace std; namespace { +/// @brief Check if SSL/TLS support is available and configured. +bool hasPgSQLTls() { + std::string tls = getPgSQLTlsEnv(); + if (tls.empty()) { + tls = getPgSQLTlsServer(); + } + return (tls == "YES"); +} + class PgSqlHostDataSourceTest : public GenericHostDataSourceTest { public: /// @brief Clears the database and opens connection to it. @@ -245,9 +254,11 @@ TEST(PgSqlHostDataSource, OpenDatabase) { NoDatabaseName); // Check for SSL/TLS support. - EXPECT_NO_THROW(HostMgr::addBackend(connectionString( - PGSQL_VALID_TYPE, VALID_NAME, VALID_HOST, VALID_USER, VALID_PASSWORD, - 0, 0, 0, 0, VALID_CA))); + if (hasPgSQLTls()) { + EXPECT_NO_THROW(HostMgr::addBackend(connectionString( + PGSQL_VALID_TYPE, VALID_NAME, VALID_HOST_TCP, VALID_SECURE_USER, + VALID_PASSWORD, 0, 0, VALID_CERT, VALID_KEY, VALID_CA, VALID_CIPHER))); + } // Tidy up after the test destroyPgSQLSchema(); diff --git a/src/hooks/dhcp/pgsql/tests/pgsql_lease_mgr_unittest.cc b/src/hooks/dhcp/pgsql/tests/pgsql_lease_mgr_unittest.cc index 1a8a24dffe..eec40a6369 100644 --- a/src/hooks/dhcp/pgsql/tests/pgsql_lease_mgr_unittest.cc +++ b/src/hooks/dhcp/pgsql/tests/pgsql_lease_mgr_unittest.cc @@ -40,6 +40,15 @@ using namespace std; namespace { +/// @brief Check if SSL/TLS support is available and configured. +bool hasPgSQLTls() { + std::string tls = getPgSQLTlsEnv(); + if (tls.empty()) { + tls = getPgSQLTlsServer(); + } + return (tls == "YES"); +} + /// @brief Test fixture class for testing PostgreSQL Lease Manager /// /// Opens the database prior to each test and closes it afterwards. @@ -210,9 +219,11 @@ TEST(PgSqlOpenTest, OpenDatabase) { NoDatabaseName); // Check for SSL/TLS support. - EXPECT_NO_THROW(LeaseMgrFactory::create(connectionString( - PGSQL_VALID_TYPE, VALID_NAME, VALID_HOST, VALID_USER, VALID_PASSWORD, - 0, 0, 0, 0, VALID_CA))); + if (hasPgSQLTls()) { + EXPECT_NO_THROW(LeaseMgrFactory::create(connectionString( + PGSQL_VALID_TYPE, VALID_NAME, VALID_HOST_TCP, VALID_SECURE_USER, + VALID_PASSWORD, 0, 0, VALID_CERT, VALID_KEY, VALID_CA, VALID_CIPHER))); + } // Check for extended info tables. const char* EX_INFO = "extended-info-tables=true";