From 4aaf5f5e734fc7fb27aa8aaed2d993f8e0ae61d6 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Sat, 3 Dec 2016 18:25:27 +1000 Subject: [PATCH] * add tests for f2b_statefile_t --- t/CMakeLists.txt | 2 ++ t/t_statefile.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 t/t_statefile.c diff --git a/t/CMakeLists.txt b/t/CMakeLists.txt index 45b3cf2..7ec6c88 100644 --- a/t/CMakeLists.txt +++ b/t/CMakeLists.txt @@ -6,6 +6,7 @@ add_executable("t_cmd" "t_cmd.c" "${SRC_DIR}/strlcpy.c" "${SRC_DIR} add_executable("t_cmsg" "t_cmsg.c" "${SRC_DIR}/strlcpy.c" "${SRC_DIR}/cmsg.c") add_executable("t_matches" "t_matches.c" "${SRC_DIR}/strlcpy.c" "${SRC_DIR}/matches.c") add_executable("t_ipaddr" "t_ipaddr.c" "${SRC_DIR}/strlcpy.c" "${SRC_DIR}/matches.c" "${SRC_DIR}/ipaddr.c") +add_executable("t_statefile" "t_statefile.c" "${SRC_DIR}/strlcpy.c" "${SRC_DIR}/matches.c" "${SRC_DIR}/ipaddr.c" "${SRC_DIR}/statefile.c" "${SRC_DIR}/log.c") add_executable("t_config_param" "t_config_param.c" "${SRC_DIR}/strlcpy.c" "${SRC_DIR}/config.c" "${SRC_DIR}/log.c") add_executable("t_backend_usage" "t_backend_usage.c" "${SRC_DIR}/strlcpy.c") @@ -13,6 +14,7 @@ add_test("tests/f2b_cmd_*" "t_cmd") add_test("tests/f2b_cmsg_*" "t_cmsg") add_test("tests/f2b_matches_*" "t_matches") add_test("tests/f2b_ipaddr_*" "t_ipaddr") +add_test("tests/f2b_statefile_*" "t_statefile") add_test("tests/f2b_config_param*" "t_config_param") add_test("tests/backend/usage_*" "t_backend_usage") diff --git a/t/t_statefile.c b/t/t_statefile.c new file mode 100644 index 0000000..06f081a --- /dev/null +++ b/t/t_statefile.c @@ -0,0 +1,58 @@ +#include "../src/common.h" +#include "../src/ipaddr.h" +#include "../src/statefile.h" + +int main() { + const char matches = 4; + bool res = false; + f2b_ipaddr_t *list = NULL; + f2b_statefile_t *sf = NULL; + char jailname[64] = ""; + struct stat st; + time_t banned_at = 0, release_at = 0; + + UNUSED(list); + + snprintf(jailname, sizeof(jailname), "%lu", time(NULL)); /* gen unique jailname */ + + sf = f2b_statefile_create("/tmp", jailname); + assert(sf != NULL); + + list = f2b_statefile_load(sf, matches); + assert(list == NULL); + + banned_at = time(NULL) - 60; + release_at = banned_at + 60 * 2; + + list = f2b_ipaddr_create("1.2.3.4", matches); + list->banned = true; + list->banned_at = banned_at; + list->release_at = release_at; + + /* empty file should be created after f2b_statefile_create() call */ + stat(sf->path, &st); + assert(st.st_size == 0); + + res = f2b_statefile_save(sf, list); + assert(res == true); + + stat(sf->path, &st); + assert(st.st_size > 0); + + f2b_ipaddr_destroy(list); + list = NULL; + + list = f2b_statefile_load(sf, matches); + assert(list != NULL); + assert(list->banned == true); + assert(list->banned_at == banned_at); + assert(list->release_at == release_at); + + f2b_ipaddr_destroy(list); + + unlink(sf->path); + + f2b_statefile_destroy(sf); + + return 0; +}