mirror of
https://github.com/Icinga/icinga2.git
synced 2026-03-22 10:31:04 -04:00
This doesn't fix any concrete errors in master, but if tests ever get reordered for some reason and the tlsutility tests run before the http tests, they will leave broken certificates behind. This could be solved by cleaning up manually in the tests, but that again could cause issues if the tlsutility tests ever run in the middle of the http ones. The proper solution is using a CTest fixture to establish a dependency where the tlsutility tests always run before the tests using a new CTest fixture that provides the cleanup between these test groups.
54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
// SPDX-FileCopyrightText: 2025 Icinga GmbH <https://icinga.com>
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#include "remote-certificate-fixture.hpp"
|
|
#include "test/test-ctest.hpp"
|
|
|
|
using namespace icinga;
|
|
|
|
const boost::filesystem::path CertificateFixture::m_PersistentCertsDir =
|
|
boost::filesystem::current_path() / "persistent" / "certs";
|
|
|
|
BOOST_AUTO_TEST_SUITE(remote_certs_fixture)
|
|
|
|
/**
|
|
* Recursively removes the directory that contains the test certificates.
|
|
*
|
|
* This needs to be done once initially to prepare the directory, in case there are any
|
|
* left-overs from previous test runs, and once after all tests using the certificates
|
|
* have been completed.
|
|
*
|
|
* This dependency is expressed as a CTest fixture and not a boost-test one, because that
|
|
* is the only way to have persistency between individual test-cases with CTest.
|
|
*/
|
|
static void CleanupPersistentCertificateDir()
|
|
{
|
|
if (boost::filesystem::exists(CertificateFixture::m_PersistentCertsDir)) {
|
|
boost::filesystem::remove_all(CertificateFixture::m_PersistentCertsDir);
|
|
}
|
|
}
|
|
|
|
BOOST_FIXTURE_TEST_CASE(prepare_directory_for_dirty_tests, ConfigurationDataDirFixture,
|
|
*CTestProperties("FIXTURES_SETUP dirty_ssl_certs"))
|
|
{
|
|
/* Same as the other prepare_directory below, only that the dirty_ssl_certs fixture this
|
|
* establishes cleans up before and after tests that leave behind certs in a broken state.
|
|
*/
|
|
CleanupPersistentCertificateDir();
|
|
}
|
|
|
|
BOOST_FIXTURE_TEST_CASE(prepare_directory_for_regular_tests, ConfigurationDataDirFixture,
|
|
*CTestProperties("FIXTURES_CLEANUP dirty_ssl_certs")
|
|
*CTestProperties("FIXTURES_SETUP ssl_certs"))
|
|
{
|
|
// Remove any existing left-overs of the persistent certificate directory from a previous
|
|
// test run.
|
|
CleanupPersistentCertificateDir();
|
|
}
|
|
|
|
BOOST_FIXTURE_TEST_CASE(cleanup_certs, ConfigurationDataDirFixture, *CTestProperties("FIXTURES_CLEANUP ssl_certs"))
|
|
{
|
|
CleanupPersistentCertificateDir();
|
|
}
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|