2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-23 02:17:33 +00:00
kea/src/hooks/dhcp/pgsql/tests/pgsql_cb_impl_unittest.cc

81 lines
2.4 KiB
C++
Raw Normal View History

2024-10-29 12:53:12 +01:00
// Copyright (C) 2021-2024 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
#include <dhcpsrv/testutils/pgsql_generic_backend_unittest.h>
#include <pgsql/testutils/pgsql_schema.h>
#include <testutils/gtest_utils.h>
#include <gtest/gtest.h>
#include <pgsql_cb_impl.h>
#include <vector>
using namespace isc::db;
using namespace isc::dhcp;
using namespace isc::dhcp::test;
using namespace isc::util;
namespace {
2022-01-27 22:24:55 +02:00
class PgSqlConfigBackendTest : public PgSqlGenericBackendTest {
public:
2022-01-27 22:24:55 +02:00
PgSqlConfigBackendTest() : PgSqlGenericBackendTest() {
createFullSchema();
}
/// @brief Setup for each test.
///
/// Creates the configuration backend impl.
virtual void SetUp() {
DatabaseConnection::ParameterMap params;
params["name"] = "keatest";
params["password"] = "keatest";
params["user"] = "keatest";
2023-10-18 18:30:33 +03:00
ASSERT_NO_THROW_LOG(cbptr_.reset(new PgSqlConfigBackendImpl("", params, 0, 0)));
}
/// @brief Cleans up after each test.
///
/// Destroys the configuration backend impl.
virtual void TearDown() {
ASSERT_NO_THROW_LOG(cbptr_.reset());
}
2022-01-27 22:24:55 +02:00
~PgSqlConfigBackendTest() {
destroyFullSchema();
}
/// @brief creates full schema (slow!)
///
/// If possible, use simpler, faster alternative: @ref createDummySchema();
/// Don't forget to tear it down with @ref destroyFullSchema();
void createFullSchema() {
// Create the actual full Kea schema.
isc::db::test::createPgSQLSchema();
}
/// @brief destroys the full schema (slow!)
///
/// Don't forget to call this method once you're done, if you used @ref createFullSchema().
void destroyFullSchema() {
// Clean up after ourselves.
isc::db::test::destroyPgSQLSchema();
}
boost::shared_ptr<PgSqlConfigBackendImpl> cbptr_;
};
// Let's start with absolute basics. This should construct a backend instance
// connected to the unit test schema. The backend instance is created in
// Setup() and which will ASSERT on failures.
2022-01-27 22:24:55 +02:00
TEST_F(PgSqlConfigBackendTest, constructor) {
// Is this the right config backend type?
[#95] All Queries - CRUD for servers src/hooks/dhcp/pgsql_cb/Makefile.am New files: pgsql_query_macros.h pgsql_cb_dhcp4.cc pgsql_cb_dhcp4.h src/hooks/dhcp/pgsql_cb/pgsql_cb_dhcp4.* Initial implementation - includes CRUD for servers src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.* PgSqlConfigBackendImpl::getStatement() PgSqlConfigBackendImpl::selectQuery() PgSqlConfigBackendImpl::insertQuery() PgSqlConfigBackendImpl::updateDeleteQuery() PgSqlConfigBackendImpl::createAuditRevision() PgSqlConfigBackendImpl::getRecentAuditEntries() PgSqlConfigBackendImpl::deleteFromTable() PgSqlConfigBackendImpl::getLastInsertId() PgSqlConfigBackendImpl::createInputRelayBinding() PgSqlConfigBackendImpl::createOptionValueBinding() PgSqlConfigBackendImpl::getServer() PgSqlConfigBackendImpl::getServers() PgSqlConfigBackendImpl::createUpdateServer() PgSqlConfigBackendImpl::attachElementToServers() PgSqlConfigBackendImpl::addRelayBinding() PgSqlConfigBackendImpl::addOptionValueBinding() PgSqlConfigBackendImpl::addRequiredClassesBinding() PgSqlConfigBackendImpl::addOptionValueBinding() src/hooks/dhcp/pgsql_cb/pgsql_cb_messages.mes New messages src/hooks/dhcp/pgsql_cb/tests/Makefile.am New file:pgsql_cb_dhcp4_unittest.cc src/hooks/dhcp/pgsql_cb/tests/pgsql_cb_dhcp4_unittest.cc New file src/lib/config_backend/base_config_backend.h src/lib/config_backend/tests/config_backend_mgr_unittest.cc src/lib/database/backend_selector.h src/lib/database/backend_selector.cc src/lib/database/tests/backend_selector_unittest.cc "pgsql" -> "postgresql" BackendSelector::Type::PGSQL -> BackendSelector::Type::POSTGRESQL src/lib/pgsql/pgsql_connection.cc Added NULL_KEY PgSqlConnection::checkStatementError() - throws DuplicateEntry and NullKeyError src/lib/pgsql/pgsql_connection.h Added NULL_KEY Upped PGSQL_MAX_PARAMETERS_IN_QUERY to 128; src/lib/pgsql/pgsql_exchange.* PsqlBindArray::popBack() - new function Cleaned up AddOptional functions PsqlBindArray::add(const ConstElementPtr& value) - new
2022-01-11 10:44:41 -05:00
EXPECT_EQ("postgresql", cbptr_->getType());
}
} // namespace