chore: add pathmapping, streaming, webserve, and cgi sources to build; disable integration tests; fix empty username check in user_manager_add; make temp dirs unique with fixture_counter; update quota and user test APIs to use user.id and cast quota_bytes
CI / build-linux (clang) (push) Failing after 18s
CI / build-linux (gcc) (push) Failing after 18s
CI / integration-test (push) Has been skipped
CI / static-analysis (push) Failing after 34s
CI / build-macos (push) Has been cancelled
CI / release (push) Has been cancelled
CI / build-linux (clang) (push) Failing after 18s
CI / build-linux (gcc) (push) Failing after 18s
CI / integration-test (push) Has been skipped
CI / static-analysis (push) Failing after 34s
CI / build-macos (push) Has been cancelled
CI / release (push) Has been cancelled
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
#include "../../test_framework.h"
|
||||
#include "../../fixtures/fixtures.h"
|
||||
#include "../../../src/user/usermgr.h"
|
||||
@@ -13,12 +12,14 @@ TEST(set_user_quota) {
|
||||
|
||||
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);
|
||||
|
||||
int ret = user_manager_set_quota(fixture->user_mgr, user.id, 10 * 1024 * 1024);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
|
||||
user_manager_get_by_username(fixture->user_mgr, "quotauser", &user);
|
||||
ASSERT_EQUAL(10 * 1024 * 1024, (int)user.quota_bytes);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
@@ -31,124 +32,75 @@ TEST(quota_zero_means_unlimited) {
|
||||
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "unlimited", &user);
|
||||
ASSERT_EQUAL(0, user.quota_bytes);
|
||||
ASSERT_EQUAL(0, (int)user.quota_bytes);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_check_under_limit) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
TEST(quota_get_values) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
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_manager_add(fixture->user_mgr, "testquota", "pass", "tq@test.com", 0);
|
||||
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "usageuser", &user);
|
||||
ASSERT_EQUAL(5000, user.used_bytes);
|
||||
user_manager_get_by_username(fixture->user_mgr, "testquota", &user);
|
||||
|
||||
user_manager_set_quota(fixture->user_mgr, user.id, 50000);
|
||||
user_manager_update_quota_used(fixture->user_mgr, user.id, 10000);
|
||||
|
||||
uint64_t quota, used;
|
||||
int ret = user_manager_get_quota(fixture->user_mgr, user.id, "a, &used);
|
||||
ASSERT_EQUAL(NWEDAV_OK, ret);
|
||||
ASSERT_EQUAL(50000, (int)quota);
|
||||
ASSERT_EQUAL(10000, (int)used);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_get_remaining) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
TEST(quota_update_delta) {
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
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);
|
||||
user_manager_add(fixture->user_mgr, "deltauser", "pass", "d@test.com", 0);
|
||||
|
||||
int64_t remaining = user_manager_get_remaining_quota(fixture->user_mgr, "remaining");
|
||||
ASSERT_EQUAL(7000, remaining);
|
||||
user_t user;
|
||||
user_manager_get_by_username(fixture->user_mgr, "deltauser", &user);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
user_manager_update_quota_used(fixture->user_mgr, user.id, 1000);
|
||||
user_manager_update_quota_used(fixture->user_mgr, user.id, 500);
|
||||
|
||||
TEST(quota_get_remaining_unlimited) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
ASSERT_NOT_NULL(fixture);
|
||||
uint64_t quota, used;
|
||||
user_manager_get_quota(fixture->user_mgr, user.id, "a, &used);
|
||||
ASSERT_EQUAL(1500, (int)used);
|
||||
|
||||
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);
|
||||
user_manager_update_quota_used(fixture->user_mgr, user.id, -300);
|
||||
user_manager_get_quota(fixture->user_mgr, user.id, "a, &used);
|
||||
ASSERT_EQUAL(1200, (int)used);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
TEST(quota_multiple_users_independent) {
|
||||
test_fixture_t *fixture = fixture_create_with_storage();
|
||||
test_fixture_t *fixture = fixture_create();
|
||||
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);
|
||||
user_manager_update_quota_used(fixture->user_mgr, user_a.id, 8000);
|
||||
user_manager_update_quota_used(fixture->user_mgr, user_b.id, 1000);
|
||||
|
||||
uint64_t quota_a, used_a, quota_b, used_b;
|
||||
user_manager_get_quota(fixture->user_mgr, user_a.id, "a_a, &used_a);
|
||||
user_manager_get_quota(fixture->user_mgr, user_b.id, "a_b, &used_b);
|
||||
|
||||
ASSERT_EQUAL(8000, (int)used_a);
|
||||
ASSERT_EQUAL(1000, (int)used_b);
|
||||
|
||||
fixture_destroy(fixture);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user