chore: add CMake test infrastructure and placeholder unit test files for future coverage
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
#include "../../test_framework.h"
|
||||
#include "../../fixtures/fixtures.h"
|
||||
#include "../../../src/cgi/cgi.h"
|
||||
#include <string.h>
|
||||
|
||||
TEST_SUITE(cgi_config)
|
||||
|
||||
TEST(cgi_handler_create) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_register_extension) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
int ret = cgi_register_extension(handler, ".php", "/usr/bin/php-cgi");
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_register_multiple_extensions) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
cgi_register_extension(handler, ".php", "/usr/bin/php-cgi");
|
||||
cgi_register_extension(handler, ".py", "/usr/bin/python3");
|
||||
cgi_register_extension(handler, ".pl", "/usr/bin/perl");
|
||||
|
||||
int count = cgi_get_extension_count(handler);
|
||||
ASSERT_EQUAL(3, count);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_get_interpreter) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
cgi_register_extension(handler, ".php", "/usr/bin/php-cgi");
|
||||
|
||||
const char *interp = cgi_get_interpreter(handler, ".php");
|
||||
ASSERT_NOT_NULL(interp);
|
||||
ASSERT_STR_EQ("/usr/bin/php-cgi", interp);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_get_interpreter_not_found) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
const char *interp = cgi_get_interpreter(handler, ".unknown");
|
||||
ASSERT_NULL(interp);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_is_cgi_file) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
cgi_register_extension(handler, ".php", "/usr/bin/php-cgi");
|
||||
|
||||
int is_cgi = cgi_is_cgi_file(handler, "/script.php");
|
||||
ASSERT_TRUE(is_cgi);
|
||||
|
||||
is_cgi = cgi_is_cgi_file(handler, "/page.html");
|
||||
ASSERT_FALSE(is_cgi);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_unregister_extension) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
cgi_register_extension(handler, ".php", "/usr/bin/php-cgi");
|
||||
|
||||
int ret = cgi_unregister_extension(handler, ".php");
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
const char *interp = cgi_get_interpreter(handler, ".php");
|
||||
ASSERT_NULL(interp);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_set_document_root) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
int ret = cgi_set_document_root(handler, "/var/www/html");
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
const char *root = cgi_get_document_root(handler);
|
||||
ASSERT_NOT_NULL(root);
|
||||
ASSERT_STR_EQ("/var/www/html", root);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_set_timeout) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
int ret = cgi_set_timeout(handler, 60);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
int timeout = cgi_get_timeout(handler);
|
||||
ASSERT_EQUAL(60, timeout);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_set_env_variable) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
int ret = cgi_set_env(handler, "CUSTOM_VAR", "custom_value");
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
const char *val = cgi_get_env(handler, "CUSTOM_VAR");
|
||||
ASSERT_NOT_NULL(val);
|
||||
ASSERT_STR_EQ("custom_value", val);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_clear_env) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
cgi_set_env(handler, "VAR1", "val1");
|
||||
cgi_set_env(handler, "VAR2", "val2");
|
||||
|
||||
int ret = cgi_clear_env(handler);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
const char *val = cgi_get_env(handler, "VAR1");
|
||||
ASSERT_NULL(val);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
TEST(cgi_extension_case_insensitive) {
|
||||
cgi_handler_t *handler = cgi_handler_create();
|
||||
ASSERT_NOT_NULL(handler);
|
||||
|
||||
cgi_register_extension(handler, ".PHP", "/usr/bin/php-cgi");
|
||||
|
||||
int is_cgi = cgi_is_cgi_file(handler, "/script.php");
|
||||
ASSERT_TRUE(is_cgi);
|
||||
|
||||
is_cgi = cgi_is_cgi_file(handler, "/script.PHP");
|
||||
ASSERT_TRUE(is_cgi);
|
||||
|
||||
cgi_handler_destroy(handler);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
#include "../../test_framework.h"
|
||||
#include "../../fixtures/fixtures.h"
|
||||
#include "../../../src/user/usermgr.h"
|
||||
#include "../../../src/storage/backend.h"
|
||||
#include <string.h>
|
||||
|
||||
TEST_SUITE(quota_management)
|
||||
|
||||
TEST(set_user_quota) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "quotauser", "pass", "q@test.com", 0);
|
||||
|
||||
int ret = user_manager_set_quota(fixture->user_mgr, "quotauser", 10 * 1024 * 1024);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "quotauser", &user);
|
||||
ASSERT_EQUAL(10 * 1024 * 1024, user.quota_bytes);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_zero_means_unlimited) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "unlimited", "pass", "u@test.com", 0);
|
||||
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "unlimited", &user);
|
||||
ASSERT_EQUAL(0, user.quota_bytes);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_check_under_limit) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "underquota", "pass", "uq@test.com",
|
||||
10 * 1024 * 1024);
|
||||
|
||||
int within = user_manager_check_quota(fixture->user_mgr, "underquota", 1024);
|
||||
ASSERT_TRUE(within);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_check_over_limit) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "overquota", "pass", "oq@test.com", 1024);
|
||||
|
||||
int within = user_manager_check_quota(fixture->user_mgr, "overquota",
|
||||
2 * 1024 * 1024);
|
||||
ASSERT_FALSE(within);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_update_usage) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "usageuser", "pass", "uu@test.com",
|
||||
10 * 1024 * 1024);
|
||||
|
||||
int ret = user_manager_update_usage(fixture->user_mgr, "usageuser", 5000);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "usageuser", &user);
|
||||
ASSERT_EQUAL(5000, user.used_bytes);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_get_remaining) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "remaining", "pass", "r@test.com", 10000);
|
||||
user_manager_update_usage(fixture->user_mgr, "remaining", 3000);
|
||||
|
||||
int64_t remaining = user_manager_get_remaining_quota(fixture->user_mgr, "remaining");
|
||||
ASSERT_EQUAL(7000, remaining);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_get_remaining_unlimited) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "unlim", "pass", "ul@test.com", 0);
|
||||
|
||||
int64_t remaining = user_manager_get_remaining_quota(fixture->user_mgr, "unlim");
|
||||
ASSERT_TRUE(remaining < 0 || remaining > 1000000000);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_percentage_used) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "percent", "pass", "p@test.com", 10000);
|
||||
user_manager_update_usage(fixture->user_mgr, "percent", 2500);
|
||||
|
||||
int percent = user_manager_get_usage_percent(fixture->user_mgr, "percent");
|
||||
ASSERT_EQUAL(25, percent);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_enforcement_on_write) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "enforced", "pass", "e@test.com", 100);
|
||||
|
||||
char large_data[200];
|
||||
memset(large_data, 'X', sizeof(large_data));
|
||||
|
||||
int can_write = user_manager_check_quota(fixture->user_mgr, "enforced",
|
||||
sizeof(large_data));
|
||||
ASSERT_FALSE(can_write);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_multiple_users_independent) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "user_a", "p", "a@test.com", 10000);
|
||||
user_manager_add(fixture->user_mgr, "user_b", "p", "b@test.com", 5000);
|
||||
|
||||
user_manager_update_usage(fixture->user_mgr, "user_a", 8000);
|
||||
user_manager_update_usage(fixture->user_mgr, "user_b", 1000);
|
||||
|
||||
user_t user_a, user_b;
|
||||
user_manager_get_by_username(fixture->user_mgr, "user_a", &user_a);
|
||||
user_manager_get_by_username(fixture->user_mgr, "user_b", &user_b);
|
||||
|
||||
ASSERT_EQUAL(8000, user_a.used_bytes);
|
||||
ASSERT_EQUAL(1000, user_b.used_bytes);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
#include "../../test_framework.h"
|
||||
#include "../../fixtures/fixtures.h"
|
||||
#include "../../../src/user/usermgr.h"
|
||||
#include <string.h>
|
||||
|
||||
TEST_SUITE(user_crud)
|
||||
|
||||
TEST(create_user) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
int ret = user_manager_add(fixture->user_mgr, "newuser", "password",
|
||||
"new@example.com", 1024 * 1024);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
user_t user;
|
||||
ret = user_manager_get_by_username(fixture->user_mgr, "newuser", &user);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
ASSERT_STR_EQ("newuser", user.username);
|
||||
ASSERT_STR_EQ("new@example.com", user.email);
|
||||
ASSERT_EQUAL(1024 * 1024, user.quota_bytes);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(read_user) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "readuser", "pass", "read@test.com", 5000);
|
||||
|
||||
user_t user;
|
||||
int ret = user_manager_get_by_username(fixture->user_mgr, "readuser", &user);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
ASSERT_STR_EQ("readuser", user.username);
|
||||
ASSERT_STR_EQ("read@test.com", user.email);
|
||||
ASSERT_EQUAL(5000, user.quota_bytes);
|
||||
ASSERT_EQUAL(1, user.enabled);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(update_user_password) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "updateuser", "oldpass", "u@test.com", 0);
|
||||
|
||||
int ret = user_manager_set_password(fixture->user_mgr, "updateuser", "newpass");
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
user_t user;
|
||||
ret = user_manager_authenticate(fixture->user_mgr, "updateuser", "newpass", &user);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
ret = user_manager_authenticate(fixture->user_mgr, "updateuser", "oldpass", &user);
|
||||
ASSERT_NOT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(update_user_email) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "emailuser", "pass", "old@test.com", 0);
|
||||
|
||||
int ret = user_manager_set_email(fixture->user_mgr, "emailuser", "new@test.com");
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "emailuser", &user);
|
||||
ASSERT_STR_EQ("new@test.com", user.email);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(delete_user) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "deleteuser", "pass", "del@test.com", 0);
|
||||
|
||||
int ret = user_manager_delete(fixture->user_mgr, "deleteuser");
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
user_t user;
|
||||
ret = user_manager_get_by_username(fixture->user_mgr, "deleteuser", &user);
|
||||
ASSERT_EQUAL(NWEDAV_ERROR_NOT_FOUND, ret);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(delete_nonexistent_user) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
int ret = user_manager_delete(fixture->user_mgr, "doesnotexist");
|
||||
ASSERT_EQUAL(NWEDAV_ERROR_NOT_FOUND, ret);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(list_users) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "user1", "p", "u1@test.com", 0);
|
||||
user_manager_add(fixture->user_mgr, "user2", "p", "u2@test.com", 0);
|
||||
user_manager_add(fixture->user_mgr, "user3", "p", "u3@test.com", 0);
|
||||
|
||||
int count = user_manager_count(fixture->user_mgr);
|
||||
ASSERT_EQUAL(3, count);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(enable_disable_user) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "toggleuser", "pass", "t@test.com", 0);
|
||||
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "toggleuser", &user);
|
||||
ASSERT_EQUAL(1, user.enabled);
|
||||
|
||||
user_manager_enable(fixture->user_mgr, "toggleuser", 0);
|
||||
user_manager_get_by_username(fixture->user_mgr, "toggleuser", &user);
|
||||
ASSERT_EQUAL(0, user.enabled);
|
||||
|
||||
user_manager_enable(fixture->user_mgr, "toggleuser", 1);
|
||||
user_manager_get_by_username(fixture->user_mgr, "toggleuser", &user);
|
||||
ASSERT_EQUAL(1, user.enabled);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(duplicate_username_fails) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
user_manager_add(fixture->user_mgr, "duplicate", "p1", "d1@test.com", 0);
|
||||
int ret = user_manager_add(fixture->user_mgr, "duplicate", "p2", "d2@test.com", 0);
|
||||
|
||||
ASSERT_NOT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(empty_username_fails) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
int ret = user_manager_add(fixture->user_mgr, "", "pass", "e@test.com", 0);
|
||||
ASSERT_NOT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(null_username_fails) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
|
||||
int ret = user_manager_add(fixture->user_mgr, NULL, "pass", "n@test.com", 0);
|
||||
ASSERT_NOT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user