Line data Source code
1 : #include <stdarg.h> 2 : #include <stddef.h> 3 : #include <setjmp.h> 4 : #include <cmocka.h> 5 : 6 : #include <errno.h> 7 : #include <stdio.h> 8 : #include <stdint.h> 9 : #include <stdbool.h> 10 : #include <unistd.h> 11 : #include <sys/stat.h> 12 : #include <talloc.h> 13 : 14 : #include "include/config.h" 15 : #include "libcli/util/ntstatus.h" 16 : #include "lib/util/samba_modules.h" 17 : 18 2 : static int teardown(void **state) 19 : { 20 2 : unsetenv("UNITTEST_DUMMY_MODULE_LOADED"); 21 : 22 2 : return 0; 23 : } 24 : 25 1 : static void test_samba_module_probe_dummy(void **state) 26 : { 27 1 : const char *module_env; 28 1 : NTSTATUS status; 29 : 30 1 : status = smb_probe_module("rpc", "test_dummy_module"); 31 1 : assert_true(NT_STATUS_IS_OK(status)); 32 : 33 1 : module_env = getenv("UNITTEST_DUMMY_MODULE_LOADED"); 34 1 : assert_non_null(module_env); 35 1 : assert_string_equal(module_env, "TRUE"); 36 1 : } 37 : 38 1 : static void test_samba_module_probe_slash(void **state) 39 : { 40 1 : char dummy_module_path[4096] = {0}; 41 1 : const char *module_env; 42 1 : NTSTATUS status; 43 : 44 1 : snprintf(dummy_module_path, 45 : sizeof(dummy_module_path), 46 : "%s/bin/modules/rpc/test_dummy_module.so", 47 : SRCDIR); 48 : 49 1 : status = smb_probe_module("rpc", dummy_module_path); 50 1 : assert_true(NT_STATUS_IS_ERR(status)); 51 : 52 1 : module_env = getenv("UNITTEST_DUMMY_MODULE_LOADED"); 53 1 : assert_null(module_env); 54 1 : } 55 : 56 1 : int main(void) { 57 1 : const struct CMUnitTest tests[] = { 58 : cmocka_unit_test_teardown(test_samba_module_probe_dummy, 59 : teardown), 60 : cmocka_unit_test_teardown(test_samba_module_probe_slash, 61 : teardown), 62 : }; 63 : 64 1 : cmocka_set_message_output(CM_OUTPUT_SUBUNIT); 65 1 : return cmocka_run_group_tests(tests, NULL, NULL); 66 : }