tests for file_p->file_send_prepare

This commit is contained in:
2026-06-22 17:13:52 +03:00
parent 2f78bd8373
commit 3f1abfd485
5 changed files with 94 additions and 16 deletions
+1 -1
View File
@@ -61,6 +61,6 @@ target_link_libraries(file_send_prepare
utils
)
target_link_options(file_list PRIVATE -Wl,--wrap=db_get_files_data,--wrap=write,--wrap=print_log,--wrap=lseek,--wrap=open)
target_link_options(file_send_prepare PRIVATE -Wl,--wrap=write,--wrap=print_log,--wrap=lseek,--wrap=open,--wrap=db_get_file)
add_test(NAME file_p_file_send_prepare_test_1 COMMAND file_send_prepare)
+88 -7
View File
@@ -17,10 +17,14 @@
dbuf_t *dbuf;
/* TODO: finish */
#define FSIZE 10233
#define FNAME "Test file"
#define FHASH 211212
#define FID 19
#define FID_S "19"
int __wrap_print_log(FILE *output, enum pl_type type, const char *format_message,
...) {
int __wrap_print_log(FILE *output, enum pl_type type,
const char *format_message, ...) {
return 0;
};
@@ -29,20 +33,94 @@ ssize_t __wrap_write(int __fd, const void *__buf, size_t __n) __wur {
return __n;
}
__off_t __wrap_lseek (int __fd, __off_t __offset, int __whence) __THROW {
__off_t __wrap_lseek(int __fd, __off_t __offset, int __whence) {
return mock_type(int);
}
int __wrap_open(const char *__file, int __oflag, ...) {
return mock_type(int);
s_file_t *__wrap_db_get_file(i_get_file_db *arg) {
assert_string_equal(arg->name, FNAME);
return mock_type(s_file_t *);
}
int __wrap_open(const char *__file, int __oflag, ...) { return mock_type(int); }
void test__file_send_prepare(void **state) {
dbuf_t *dbuf = dbuf_init(INBUFSIZE);
s_file_t file = {.name = FNAME, .size = FSIZE, .hash = FHASH, .id = FID};
char line[] = "[" FNAME "]";
session sess = {
.uname = "user1234",
.sd = 0,
.file = NULL,
};
int res = 0;
will_return(__wrap_db_get_file, &file);
will_return(__wrap_open, 5);
will_return(__wrap_lseek, FSIZE);
will_return(__wrap_lseek, 0);
res = file_send_prepare(&sess, line, NULL);
assert_int_equal(res, 0);
assert_ptr_not_equal(sess.file, NULL);
assert_int_equal(file.rest, FSIZE);
assert_string_equal(file.path, "./storage/00/03390c");
}
void test__file_send_prepare__db_no_file(void **state) {
char line[] = "[" FNAME "]";
session sess = {
.uname = "user1234",
.sd = 0,
.file = NULL,
};
int res = 0;
will_return(__wrap_db_get_file, NULL);
res = file_send_prepare(&sess, line, NULL);
assert_int_equal(res, -1);
assert_int_equal(sess.file, NULL);
}
void test__file_send_prepare__no_open(void **state) {
dbuf = dbuf_init(INBUFSIZE);
s_file_t file = {.name = FNAME, .size = FSIZE, .hash = FHASH, .id = FID};
char line[] = "[" FNAME "]";
session sess = {
.uname = "user1234",
.sd = 0,
.file = NULL,
};
int res = 0;
will_return(__wrap_db_get_file, &file);
will_return(__wrap_open, -1);
res = file_send_prepare(&sess, line, NULL);
assert_int_equal(res, -2);
assert_ptr_not_equal(sess.file, NULL);
assert_string_equal("Can't open file with id = " FID_S "\n", dbuf->ptr);
dbuf_destroy(&dbuf);
}
void test__file_send_prepare__size_not_correct(void **state) {
dbuf = dbuf_init(INBUFSIZE);
s_file_t file = {.name = FNAME, .size = FSIZE, .hash = FHASH, .id = FID};
char line[] = "[" FNAME "]";
session sess = {
.uname = "user1234",
.sd = 0,
.file = NULL,
};
int res = 0;
will_return(__wrap_db_get_file, &file);
will_return(__wrap_open, 5);
will_return(__wrap_lseek, FSIZE - 1);
will_return(__wrap_lseek, 0);
res = file_send_prepare(&sess, line, NULL);
assert_int_equal(res, -3);
assert_ptr_not_equal(sess.file, NULL);
assert_string_equal(file.path, "./storage/00/03390c");
assert_string_equal("File with id = " FID_S " exists, but seems to be damaged\n", dbuf->ptr);
dbuf_destroy(&dbuf);
}
int setup(void **state) { return 0; }
@@ -51,6 +129,9 @@ int tear_down(void **state) { return 0; }
int main(int argc, char **argv) {
const struct CMUnitTest tests[] = {
cmocka_unit_test(test__file_send_prepare),
cmocka_unit_test(test__file_send_prepare__no_open),
cmocka_unit_test(test__file_send_prepare__db_no_file),
cmocka_unit_test(test__file_send_prepare__size_not_correct),
};
return cmocka_run_group_tests(tests, setup, tear_down);
+1 -2
View File
@@ -49,10 +49,9 @@ void test__create_user__partial(void **state) {
session sess = {};
i_db_user_create p;
int32_t ret = 0;
char line[1024];
char line[1024] = "register " UNAME " " PASS "\n";
/* Less args */
sprintf(line, "register %s %s\n", UNAME, PASS);
ret = create_user(&sess, line);
assert_int_equal(ret, 0);
+1 -2
View File
@@ -28,8 +28,7 @@ void test_create_user(void **state) {
session sess = {};
i_db_user_create p;
int32_t ret = 0;
char line[sizeof "register" + sizeof UNAME + sizeof PASS + sizeof EMAIL + 5];
sprintf(line, "register %s %s %s\n", UNAME, PASS, EMAIL);
char line[] = "register " UNAME " " PASS " " EMAIL "\n";
will_return(__wrap_db_user_create, 123);
ret = create_user(&sess, line);
assert_int_equal(ret, 123);
+1 -2
View File
@@ -42,8 +42,7 @@ void test_create_login_success(void **state) {
// assert_int_not_equal(sess.privileges, 0);
assert_int_equal(sess.state, OP_WAIT);
char welcome_mes[sizeof "Welcome, " + sizeof UNAME + 5];
sprintf(welcome_mes, "Welcome, %s\n", UNAME);
char welcome_mes[] = "Welcome, " UNAME "\n";
assert_string_equal(welcome_mes, ret_buf);
}