tests for file_p->file_send_prepare
This commit is contained in:
@@ -61,6 +61,6 @@ target_link_libraries(file_send_prepare
|
|||||||
utils
|
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)
|
add_test(NAME file_p_file_send_prepare_test_1 COMMAND file_send_prepare)
|
||||||
@@ -17,10 +17,14 @@
|
|||||||
|
|
||||||
dbuf_t *dbuf;
|
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;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -29,20 +33,94 @@ ssize_t __wrap_write(int __fd, const void *__buf, size_t __n) __wur {
|
|||||||
return __n;
|
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);
|
return mock_type(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __wrap_open(const char *__file, int __oflag, ...) {
|
s_file_t *__wrap_db_get_file(i_get_file_db *arg) {
|
||||||
return mock_type(int);
|
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) {
|
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 = {
|
session sess = {
|
||||||
.uname = "user1234",
|
.uname = "user1234",
|
||||||
.sd = 0,
|
.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; }
|
int setup(void **state) { return 0; }
|
||||||
@@ -51,6 +129,9 @@ int tear_down(void **state) { return 0; }
|
|||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
const struct CMUnitTest tests[] = {
|
const struct CMUnitTest tests[] = {
|
||||||
cmocka_unit_test(test__file_send_prepare),
|
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);
|
return cmocka_run_group_tests(tests, setup, tear_down);
|
||||||
|
|||||||
@@ -49,10 +49,9 @@ void test__create_user__partial(void **state) {
|
|||||||
session sess = {};
|
session sess = {};
|
||||||
i_db_user_create p;
|
i_db_user_create p;
|
||||||
int32_t ret = 0;
|
int32_t ret = 0;
|
||||||
char line[1024];
|
char line[1024] = "register " UNAME " " PASS "\n";
|
||||||
|
|
||||||
/* Less args */
|
/* Less args */
|
||||||
sprintf(line, "register %s %s\n", UNAME, PASS);
|
|
||||||
ret = create_user(&sess, line);
|
ret = create_user(&sess, line);
|
||||||
assert_int_equal(ret, 0);
|
assert_int_equal(ret, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -28,8 +28,7 @@ void test_create_user(void **state) {
|
|||||||
session sess = {};
|
session sess = {};
|
||||||
i_db_user_create p;
|
i_db_user_create p;
|
||||||
int32_t ret = 0;
|
int32_t ret = 0;
|
||||||
char line[sizeof "register" + sizeof UNAME + sizeof PASS + sizeof EMAIL + 5];
|
char line[] = "register " UNAME " " PASS " " EMAIL "\n";
|
||||||
sprintf(line, "register %s %s %s\n", UNAME, PASS, EMAIL);
|
|
||||||
will_return(__wrap_db_user_create, 123);
|
will_return(__wrap_db_user_create, 123);
|
||||||
ret = create_user(&sess, line);
|
ret = create_user(&sess, line);
|
||||||
assert_int_equal(ret, 123);
|
assert_int_equal(ret, 123);
|
||||||
|
|||||||
+1
-2
@@ -42,8 +42,7 @@ void test_create_login_success(void **state) {
|
|||||||
// assert_int_not_equal(sess.privileges, 0);
|
// assert_int_not_equal(sess.privileges, 0);
|
||||||
assert_int_equal(sess.state, OP_WAIT);
|
assert_int_equal(sess.state, OP_WAIT);
|
||||||
|
|
||||||
char welcome_mes[sizeof "Welcome, " + sizeof UNAME + 5];
|
char welcome_mes[] = "Welcome, " UNAME "\n";
|
||||||
sprintf(welcome_mes, "Welcome, %s\n", UNAME);
|
|
||||||
assert_string_equal(welcome_mes, ret_buf);
|
assert_string_equal(welcome_mes, ret_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user