test_database_version.c
Go to the documentation of this file.
/*
* Copyright (c) 2014 Jerry Lundström <lundstrom.jerry@gmail.com>
* Copyright (c) 2014 .SE (The Internet Infrastructure Foundation).
* Copyright (c) 2014 OpenDNSSEC AB (svb)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "CUnit/Basic.h"
#include "../db_configuration.h"
#include "../db_connection.h"
#include "../database_version.h"
#include <string.h>
static db_configuration_list_t* configuration_list = NULL;
static db_configuration_t* configuration = NULL;
static db_connection_t* connection = NULL;
static database_version_t* object = NULL;
static database_version_list_t* object_list = NULL;
static db_value_t id = DB_VALUE_EMPTY;
static db_clause_list_t* clause_list = NULL;
static int db_sqlite = 0;
static int db_mysql = 0;
#if defined(ENFORCER_DATABASE_SQLITE3)
int test_database_version_init_suite_sqlite(void) {
if (configuration_list) {
return 1;
}
if (configuration) {
return 1;
}
if (connection) {
return 1;
}
/*
* Setup the configuration for the connection
*/
if (!(configuration_list = db_configuration_list_new())) {
return 1;
}
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "backend")
|| db_configuration_set_value(configuration, "sqlite")
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "file")
|| db_configuration_set_value(configuration, "test.db")
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
/*
* Connect to the database
*/
if (!(connection = db_connection_new())
|| db_connection_set_configuration_list(connection, configuration_list))
{
db_connection_free(connection);
connection = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration_list = NULL;
if (db_connection_setup(connection)
|| db_connection_connect(connection))
{
db_connection_free(connection);
connection = NULL;
return 1;
}
db_sqlite = 1;
db_mysql = 0;
return 0;
}
#endif
#if defined(ENFORCER_DATABASE_MYSQL)
int test_database_version_init_suite_mysql(void) {
if (configuration_list) {
return 1;
}
if (configuration) {
return 1;
}
if (connection) {
return 1;
}
/*
* Setup the configuration for the connection
*/
if (!(configuration_list = db_configuration_list_new())) {
return 1;
}
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "backend")
|| db_configuration_set_value(configuration, "mysql")
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "host")
|| db_configuration_set_value(configuration, ENFORCER_DB_HOST)
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "port")
|| db_configuration_set_value(configuration, ENFORCER_DB_PORT_TEXT)
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "user")
|| db_configuration_set_value(configuration, ENFORCER_DB_USERNAME)
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "pass")
|| db_configuration_set_value(configuration, ENFORCER_DB_PASSWORD)
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
if (!(configuration = db_configuration_new())
|| db_configuration_set_name(configuration, "db")
|| db_configuration_set_value(configuration, ENFORCER_DB_DATABASE)
|| db_configuration_list_add(configuration_list, configuration))
{
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration = NULL;
/*
* Connect to the database
*/
if (!(connection = db_connection_new())
|| db_connection_set_configuration_list(connection, configuration_list))
{
db_connection_free(connection);
connection = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
return 1;
}
configuration_list = NULL;
if (db_connection_setup(connection)
|| db_connection_connect(connection))
{
db_connection_free(connection);
connection = NULL;
return 1;
}
db_sqlite = 0;
db_mysql = 1;
return 0;
}
#endif
static int test_database_version_clean_suite(void) {
db_connection_free(connection);
connection = NULL;
db_configuration_free(configuration);
configuration = NULL;
db_configuration_list_free(configuration_list);
configuration_list = NULL;
db_value_reset(&id);
db_clause_list_free(clause_list);
clause_list = NULL;
return 0;
}
static void test_database_version_new(void) {
CU_ASSERT_PTR_NOT_NULL_FATAL((object = database_version_new(connection)));
CU_ASSERT_PTR_NOT_NULL_FATAL((object_list = database_version_list_new(connection)));
}
static void test_database_version_get(void) {
CU_ASSERT_EQUAL(database_version_get_version(connection), 1);
}
static void test_database_version_list(void) {
const database_version_t* item;
database_version_list_t* new_list;
CU_ASSERT_FATAL(!database_version_list_get(object_list));
CU_ASSERT_PTR_NOT_NULL_FATAL((item = database_version_list_next(object_list)));
CU_ASSERT_FATAL(!database_version_list_get(object_list));
CU_PASS("database_version_free");
CU_PASS("database_version_free");
CU_ASSERT_PTR_NOT_NULL((new_list = database_version_list_new_get(connection)));
CU_ASSERT_PTR_NOT_NULL(database_version_list_next(new_list));
database_version_list_free(new_list);
}
static void test_database_version_end(void) {
if (object) {
database_version_free(object);
CU_PASS("database_version_free");
}
if (object_list) {
database_version_list_free(object_list);
CU_PASS("database_version_list_free");
}
}
static int test_database_version_add_tests(CU_pSuite pSuite) {
if (!CU_add_test(pSuite, "new object", test_database_version_new)
|| !CU_add_test(pSuite, "get fields", test_database_version_get)
|| !CU_add_test(pSuite, "list objects", test_database_version_list)
|| !CU_add_test(pSuite, "end test", test_database_version_end))
{
return CU_get_error();
}
return 0;
}
int test_database_version_add_suite(void) {
CU_pSuite pSuite = NULL;
int ret;
#if defined(ENFORCER_DATABASE_SQLITE3)
pSuite = CU_add_suite("Test of database version (SQLite)", test_database_version_init_suite_sqlite, test_database_version_clean_suite);
if (!pSuite) {
return CU_get_error();
}
ret = test_database_version_add_tests(pSuite);
if (ret) {
return ret;
}
#endif
#if defined(ENFORCER_DATABASE_MYSQL)
pSuite = CU_add_suite("Test of database version (MySQL)", test_database_version_init_suite_mysql, test_database_version_clean_suite);
if (!pSuite) {
return CU_get_error();
}
ret = test_database_version_add_tests(pSuite);
if (ret) {
return ret;
}
#endif
return 0;
}
db_configuration_list
Definition: db_configuration.h:93
db_connection_setup
int db_connection_setup(db_connection_t *connection)
Definition: db_connection.c:66
db_configuration_new
db_configuration_t * db_configuration_new(void)
Definition: db_configuration.c:41
DB_VALUE_EMPTY
#define DB_VALUE_EMPTY
Definition: db_value.h:60
database_version_new
database_version_t * database_version_new(const db_connection_t *connection)
Definition: database_version.c:102
db_configuration
Definition: db_configuration.h:41
database_version_list_new_get
database_version_list_t * database_version_list_new_get(const db_connection_t *connection)
Definition: database_version.c:248
db_clause_list
Definition: db_clause.h:226
database_version_free
void database_version_free(database_version_t *database_version)
Definition: database_version.c:118
db_configuration_set_name
int db_configuration_set_name(db_configuration_t *configuration, const char *name)
Definition: db_configuration.c:68
database_version_list_new
database_version_list_t * database_version_list_new(const db_connection_t *connection)
Definition: database_version.c:165
test_database_version_add_suite
int test_database_version_add_suite(void)
Definition: test_database_version.c:302
db_value
Definition: db_value.h:48
db_clause_list_free
void db_clause_list_free(db_clause_list_t *clause_list)
Definition: db_clause.c:209
db_configuration_list_add
int db_configuration_list_add(db_configuration_list_t *configuration_list, db_configuration_t *configuration)
Definition: db_configuration.c:150
database_version_list_next
const database_version_t * database_version_list_next(database_version_list_t *database_version_list)
Definition: database_version.c:265
db_configuration_free
void db_configuration_free(db_configuration_t *configuration)
Definition: db_configuration.c:48
db_value_reset
void db_value_reset(db_value_t *value)
Definition: db_value.c:60
database_version_list_get
int database_version_list_get(database_version_list_t *database_version_list)
Definition: database_version.c:209
database_version_get_version
int database_version_get_version(db_connection_t *connection)
Definition: database_version_ext.c:32
database_version_list_free
void database_version_list_free(database_version_list_t *database_version_list)
Definition: database_version.c:179
db_configuration_list_new
db_configuration_list_t * db_configuration_list_new(void)
Definition: db_configuration.c:127
database_version_list
Definition: database_version.h:83
db_connection_set_configuration_list
int db_connection_set_configuration_list(db_connection_t *connection, const db_configuration_list_t *configuration_list)
Definition: db_connection.c:54
db_connection_free
void db_connection_free(db_connection_t *connection)
Definition: db_connection.c:45
db_connection
Definition: db_connection.h:46
db_configuration_set_value
int db_configuration_set_value(db_configuration_t *configuration, const char *value)
Definition: db_configuration.c:89
db_connection_connect
int db_connection_connect(const db_connection_t *connection)
Definition: db_connection.c:88
db_connection_new
db_connection_t * db_connection_new(void)
Definition: db_connection.c:38
database_version
Definition: database_version.h:45
db_configuration_list_free
void db_configuration_list_free(db_configuration_list_t *configuration_list)
Definition: db_configuration.c:134