diff options
author | Samuel Cabrero <scabrero@suse.de> | 2019-02-27 21:36:22 +0100 |
---|---|---|
committer | Samuel Cabrero <scabrero@sn-devel-184> | 2020-03-20 15:36:35 +0000 |
commit | 06a913a2699627bda45acab7225da1e4dc849d84 (patch) | |
tree | 65e734d409b5c40eb576a0c539f84bfabdd44162 /testsuite | |
parent | 0d37a00be74e912d1680d19437ebf303ae4dd912 (diff) | |
download | samba-06a913a2699627bda45acab7225da1e4dc849d84.tar.gz |
s3:rpc_server: Retrieve dcesrv_context from parent context to open NP
Get the dcesrv_context from parent context and use it to search the
endpoint serving the named pipe. Once we have the endpoint pass it to
the make_internal_rpc_pipe_socketpair function.
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/unittests/test_sambafs_srv_pipe.c | 73 |
1 files changed, 51 insertions, 22 deletions
diff --git a/testsuite/unittests/test_sambafs_srv_pipe.c b/testsuite/unittests/test_sambafs_srv_pipe.c index 161f7131e8e..40798b588c7 100644 --- a/testsuite/unittests/test_sambafs_srv_pipe.c +++ b/testsuite/unittests/test_sambafs_srv_pipe.c @@ -9,55 +9,86 @@ #include "include/config.h" #include "librpc/gen_ndr/ndr_samr.h" +#include "librpc/gen_ndr/ndr_samr_scompat.h" #include "source3/rpc_server/srv_pipe.h" -#include "librpc/gen_ndr/srv_samr.h" +#include "librpc/rpc/rpc_common.h" +#include "librpc/rpc/dcesrv_core.h" +#include "talloc.h" + +struct test_state { + TALLOC_CTX *mem_ctx; + struct loadparm_context *lp_ctx; + struct dcesrv_context *dce_ctx; +}; static int setup_samr(void **state) { - rpc_samr_init(NULL); + TALLOC_CTX *mem_ctx; + struct test_state *s; + const struct dcesrv_endpoint_server *ep_server; + NTSTATUS status; - return 0; -} + mem_ctx = talloc_new(NULL); + assert_non_null(mem_ctx); -static int teardown(void **state) -{ - unsetenv("UNITTEST_DUMMY_MODULE_LOADED"); + s = talloc_zero(mem_ctx, struct test_state); + assert_non_null(s); + + s->mem_ctx = mem_ctx; + + ep_server = samr_get_ep_server(); + assert_non_null(ep_server); + + status = dcerpc_register_ep_server(ep_server); + assert_true(NT_STATUS_IS_OK(status)); + + status = dcesrv_init_context(s, NULL, NULL, &s->dce_ctx); + assert_true(NT_STATUS_IS_OK(status)); + + status = dcesrv_init_ep_server(s->dce_ctx, "samr"); + assert_true(NT_STATUS_IS_OK(status)); + + *state = s; return 0; } static int teardown_samr(void **state) { - rpc_samr_shutdown(); + struct test_state *s = talloc_get_type_abort(*state, + struct test_state); + + unsetenv("UNITTEST_DUMMY_MODULE_LOADED"); - teardown(state); + dcesrv_shutdown_ep_server(s->dce_ctx, "samr"); + + talloc_free(s->mem_ctx); return 0; } static void test_is_known_pipename(void **state) { - struct ndr_syntax_id syntax_id = ndr_table_samr.syntax_id; + struct test_state *s = talloc_get_type_abort(*state, + struct test_state); + struct dcesrv_endpoint *ep; + char dummy_module_path[4096] = {0}; + const char *module_env; NTSTATUS status; - status = is_known_pipename("samr", &syntax_id); + status = is_known_pipename(s->dce_ctx, "samr", &ep); assert_true(NT_STATUS_IS_OK(status)); -} -static void test_is_known_pipename_slash(void **state) -{ - struct ndr_syntax_id syntax_id = ndr_table_samr.syntax_id; - char dummy_module_path[4096] = {0}; - const char *module_env; - NTSTATUS status; + status = is_known_pipename(s->dce_ctx, "SAMR", &ep); + assert_true(NT_STATUS_IS_OK(status)); snprintf(dummy_module_path, sizeof(dummy_module_path), "%s/bin/modules/rpc/test_dummy_module.so", SRCDIR); - status = is_known_pipename(dummy_module_path, &syntax_id); - assert_true(NT_STATUS_IS_ERR(status)); + status = is_known_pipename(s->dce_ctx, dummy_module_path, &ep); + assert_false(NT_STATUS_IS_OK(status)); module_env = getenv("UNITTEST_DUMMY_MODULE_LOADED"); assert_null(module_env); @@ -68,8 +99,6 @@ int main(void) { cmocka_unit_test_setup_teardown(test_is_known_pipename, setup_samr, teardown_samr), - cmocka_unit_test_teardown(test_is_known_pipename_slash, - teardown), }; cmocka_set_message_output(CM_OUTPUT_SUBUNIT); |